一.动态内存管理函数简介
1.malloc()函数
malloc()函数使用形式如下:
void* malloc (size_t size)
其作用是在内存的堆区中申请size个字节的空间(该空间的每一个bit位的值是随机的),并返回一个指向该空间起始位置的指针,如果申请失败则返回NULL指针。
例如:
int* p = (int*)malloc(10*sizeof(int));
指向内存申请40个字节空间,并返回一个被强制类型转换成int型的该空间起始位置的地址赋给int型的指针变量p。
2.calloc()函数
calloc()函数使用形式如下:
void* calloc (size_t num, size_t size)
其作用是在内存中的堆区为一个有num个元素的数组,每个元素是size个字节大小的数组申请空间(该空间的每一个bit位的值都被初始化为0),并返回一个指向该空间起始位置的指针,如果申请失败则返回NULL指针。
例如:
int* p = (int*)calloc(10, sizeof(int))
指向内存申请40个字节空间并把这块空间的所有内容全部初始化为0,然后返回一个被强制类型转换成int型的该空间起始位置的地址赋给int型的指针变量p。
因此calloc==malloc+初始化为0.
3.realloc()函数
realloc()函数的使用形式如下:
void* realloc (void* ptr, size_t size)
其作用是改变由ptr所指向的在内存中堆区的空间为size个字节大小
如果后面的空间足够大就扩容并返回原地址;
如果后面的空间不够大就新开辟一块空间,把旧空间的数据拷贝过来,再把旧空间释放,最后返回新开辟空间的起始地址;
如果realloc()开辟失败则返回NULL指针。
例如:
int* p = (int*)malloc(40);
int

本文详细介绍了C语言中动态内存管理的四个关键函数:malloc(), calloc(), realloc(), free(),并列举了使用这些函数时常见的错误,包括对NULL指针的解引用、越界访问、对非动态内存使用free释放、部分释放内存、重复释放和内存泄漏等问题。"
133669954,19694561,使用PyQt5创建带标签的复选框教程,"['PyQt5', 'GUI开发', 'Python编程', '用户交互', '桌面应用']
最低0.47元/天 解锁文章
2269





