首页 > 系统相关 >动态内存分配(callco,realloc,笔试题目)2

动态内存分配(callco,realloc,笔试题目)2

时间:2023-09-18 19:32:13浏览次数:37  
标签:10 int realloc free callco 内存 动态内存 NULL

动态内存分配(callco,realloc,笔试题目)2_i++

相比于malloc加了有一个自动初始化的功能

int main()
{
	int* p = (int*)calloc(10,sizeof(int));//创建之后就默认数据初始化为0
	if (p == NULL)
	{
		printf("%s\n", strerror(errno));
	}
	else
	{
		int i = 0;
		for (i = 0; i < 10; i++)
		{
			*(p + i) = i;
		}
		for (i = 0; i < 10; i++)
		{
			printf("%d ", *(p + i));
		}
	}
	free(p);//释放动态开辟的空间
	p = NULL;
	return 0;
}

动态内存分配(callco,realloc,笔试题目)2_动态内存_02

动态内存分配(callco,realloc,笔试题目)2_i++_03

realloc的使用方法,和注意事项

动态内存分配(callco,realloc,笔试题目)2_初始化_04

realloc在申请和添加空间的时候,有两种情况,一种是后面的空间足够可以追加,一种是后面的空间不足够进行追加,这时候就会重新申请一块足够大的空间。都是在堆区上进行操作的。

realloc也可以实现和malloc相同的功能,如下图所示

动态内存分配(callco,realloc,笔试题目)2_初始化_05

常见的错误都是对操作函数认识不足产生的。

1.对NULL进行解引用操作

动态内存分配(callco,realloc,笔试题目)2_初始化_06

2.对动态开辟空间的越界访问

动态内存分配(callco,realloc,笔试题目)2_动态内存_07

3.对非动态开辟内存使用free释放

动态内存分配(callco,realloc,笔试题目)2_i++_08

4.使用free释放动态开辟内存的一部分

动态内存分配(callco,realloc,笔试题目)2_初始化_09

动态内存分配(callco,realloc,笔试题目)2_初始化_10

5.对同一块动态内存的多次释放

动态内存分配(callco,realloc,笔试题目)2_初始化_11

6.动态开辟内存忘记释放

动态内存分配(callco,realloc,笔试题目)2_i++_12

内存笔试题

1

动态内存分配(callco,realloc,笔试题目)2_i++_13

错误地方,以及存在的问题

动态内存分配(callco,realloc,笔试题目)2_i++_14

第一种改正方式,利用二级指针的方式改正

动态内存分配(callco,realloc,笔试题目)2_i++_15

动态内存分配(callco,realloc,笔试题目)2_动态内存_16

第二种改正方式,利用返回值的方式改正

动态内存分配(callco,realloc,笔试题目)2_初始化_17

标签:10,int,realloc,free,callco,内存,动态内存,NULL
From: https://blog.51cto.com/u_15906483/7514752

相关文章

  • 动态内存分配(malloc,free)1
    使用动态内存开辟函数,可以创捷长度可变的数组大小,这样可以减少空间的浪费。在创建可变长度的数组时,其实在C99标准下,是可以直接创建的,例如linux下gcc编译器可以通过编译命令gcctest.c-std=c99,来实现。在vs下是不支持的,所以需要通过内存开辟函数来进行创建。在开辟空间的时候,有可能......
  • realloc() 用法详解
    在开发过程中我们经常要动态地进行内存分配,而内存的管理是一个重要的问题。在C语言中,内存分为四个区域:堆区,栈区,全局/静态存储区和常量存储区。其中,堆区用于动态内存分配。在C标准库中,主要有两个函数用于动态内存分配,分别是malloc()和realloc()。malloc()函数malloc()函数在堆内......
  • 动态内存函数
    1.为什么存在动态内存分配?我们已经掌握的内存开辟方式有:int val=20;//在栈空间上开辟四个字节char arr[10]={0};//在栈空间上开局但是上述的开辟空间的方式有两个特点1.空间开辟大小是固定的。2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需......
  • C语言中如何进行动态内存分配和释放
    动态内存分配和释放是C语言中非常重要的概念,它允许在程序运行时动态地申请和释放内存空间,提高程序的灵活性和效率。本文将围绕这一主题,详细介绍C语言中如何进行动态内存分配和释放。在C语言中,动态内存分配和释放主要通过malloc()和free()函数实现。malloc()函数用于申请一块指定......
  • 软件开发入门教程网 Search之C++ 动态内存
       C++基本的输入输出   ......
  • 大一下第二学期期中知识复习梳理 之 c++动态内存分配
    一、动态内存分配基本概念1、数组实现顺序表的缺陷:静态内存管理——程序在编译时,根据数组元素类型和个数分配所需内存大小,在程序运行时无法改变。2、内存空间分布 3、动态内存管理1) 2)动态内存分配(1)操作符new动态分配变量数组(对象数组): 指针变量=new变量类型[变量表......
  • 动态内存分配
    动态内存分配头文件#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<windows.h>mallocintmain(){//像内存申请10个整形的空间int*p=(int*)malloc(10*sizeof(int));//malloc不初始化为零if(p==NULL)......
  • MFC-realloc修改数组容量
     TCHAR*p,*q;//分配初始内存空间p=(TCHAR*)malloc(10*sizeof(TCHAR));//初始化p中的数据for(inti=0;i<9;i++){*(p+i)=_T('a');}*(p+9)=_T('\0');//扩容pq=(TCHAR*)realloc......
  • 57.malloc、realloc、calloc的区别
    57.malloc、realloc、calloc的区别malloc、realloc和calloc是C语言中的内存分配函数,它们有以下区别:1.内存来源:malloc和realloc分配的内存空间位于堆中,而calloc在分配内存空间后会将其每一位都初始化为零,它也被称为“零初始化内存分配器”。2.参数不同:malloc函数的参数是需要的......
  • 06-动态内存分配
    目录一.malloc,calloc和realloc用法1.1malloc详解一.malloc,calloc和realloc用法1.1malloc详解......