C语言笔记:分配内存,malloc与数组

1.malloc()
头文件stdlib.h
分配内存,返回动态分配内存块的首字节地址。
可以把该地址赋给另一个指针变量,并使用指针访问这块内存,例如:

double * ptd;
ptd = (double *)malloc(n * sizeof(double));
//可使用ptd[i]来访问第i个元素,i<n。

用malloc()创建二维数组:

int p (*)[m];//p2指向一个内含m个某类型值的数组,p2[i]代表一个由m个此类型数构成的元素
p = (int (*)[m]) malloc(n * m * sizeof(int));//n*m数组

2.free()
free()的参数是之前malloc()返回的地址,释放malloc()分配的内存,防止内存泄漏。例如:

free(ptd);

free()所用的指针变量可以与malloc()的指针变量不同,但两个指针必须存储相同的地址,不能释放同一块内存两次。

3.exit()
判断内存是否分配失败,返回值为1.
返回值:EXIT_FAILURE:普通的程序结束;
EXIT_SUCCESS:程序异常终止。例如:

exit(EXIT_FAILURE);

4.calloc()
同malloc(),且把块中的所有位设置为0,例如:

long * newmem;
newmem = (long *)calloc(100,sizeof(long));

第一个参数为所需的存储单元数量,第二个参数是存储单元的大小。

5.存储类别和动态内存分配
程序内存分为静态存储,自动存储和动态分配。
静态存储类别的变量在程序开始时创建,结束时被销毁;
自动存储类别的变量在进入变量定义所在块时存在,离开块时销毁;
动态分配的内存在调用malloc()或相关函数时存在,调用free()后销毁。

(整理自:C Primer Plus)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值