怎么做透明的网站图片,建设银行预约纪念钞网站,做水果的网站,让别人访问自己做的网站请阅读【嵌入式开发学习必备专栏 】 文章目录 malloc 与 reallocmallocrealloc主要差异点 malloc 与 realloc
malloc 和 realloc 都是 C 语言标准库中的函数#xff0c;用于动态内存分配。它们在使用上有明显的区别#xff1a;
malloc
malloc#xff08;Memory Allocatio…请阅读【嵌入式开发学习必备专栏 】 文章目录 malloc 与 reallocmallocrealloc主要差异点 malloc 与 realloc
malloc 和 realloc 都是 C 语言标准库中的函数用于动态内存分配。它们在使用上有明显的区别
malloc
mallocMemory Allocation用于分配一块新的未初始化的内存。分配的内存大小是由参数指定的单位是字节。如果内存分配成功它返回一个指向分配内存的指针。如果内存分配失败它返回 NULL。分配的内存内容是未初始化的可能包含任意数据垃圾值。
#include stdlib.hint *arr (int *)malloc(10 * sizeof(int)); // 分配一个整型数组大小为 10 个整数
if (arr NULL) {// 处理内存分配失败
}realloc
reallocRe-Allocation用于重新分配之前已经分配的内存块的大小。它允许增大或减小原有内存块的大小。第一个参数是指向原有内存块的指针第二个参数是新的内存大小。如果内存重新分配成功它返回一个指向新内存的指针可能与原来的指针不同。如果内存重新分配失败它返回 NULL且原有内存块保持不变。当增大内存块时新分配的内存部分内容是未初始化的。如果新的内存大小为零行为与标准不一定一致有些实现可能返回 NULL有些可能返回一个可安全 free 的非 NULL 指针。
#include stdlib.hint *arr (int *)malloc(10 * sizeof(int)); // 最初分配内存
if (arr NULL) {// 处理内存分配失败
}
int *new_arr (int *)realloc(arr, 20 * sizeof(int)); // 尝试重新分配为更大的大小
if (new_arr NULL) {// 处理内存重新分配失败原始 arr 依然有效需要最终释放
} else {arr new_arr; // 更新 arr 指针为新内存的地址
}主要差异点
目的: malloc 用于初次分配内存realloc 用于修改已分配内存的大小。初始化: malloc 不会初始化内存realloc 保留原有内存内容并且可能会添加未初始化的内存。指针: realloc 需要一个已分配内存的指针参数malloc 不需要。使用场景: 当 不确定最初需要多少内存或者 的内存需求可能会改变时使用 realloc 可以调整内存大小。
在使用 realloc 时如果返回一个新的指针 应该用新指针替换旧指针。如果 realloc 调用失败它返回 NULL但原先的内存还是要通过旧指针来释放的。
一定要记得用 malloc、calloc 或 realloc 分配的内存都必须通过 free 函数来释放以避免内存泄漏。