在文章嵌入式Linux开发《C语言专题(五:(3)实用的内存函数4)》嵌入式Linux开发《C语言专题(五:(3)实用的内存函数5)》中对C语言中内存操作函数做了部分介绍。最后留了与malloc&free有关的几个问题,这篇文章将用代码和结果来分析这些问题,如下所示:
1)malloc(0)真的是申请0空间吗?malloc(100)呢?
2)malloc 多次free 1次 或者malloc 1次 free多次?
3)没有检查内存分配是否成功?
4)使用申请的动态内存时超出了申请的内存边界?
5)释放一部分内存空间?
6)试图访问已经释放的内存?
(1)malloc(0)真的是申请0空间吗?malloc(100)呢?
代码演示:#include //一定要加上操作头文件#include #define NUMBER 4//演示malloc(0)和malloc(100)int main(int argc, char** argv){int i = 0;int *p = NULL;//第一步:申请内存空间p = (int *)malloc(0); //p = (int *)malloc(100);//第二步:检查返回值if(NULL == p){printf("申请内存空间出错");//如果出错,退出整个进程exit(-1); }printf("申请的地址为 = %p