gpt4 book ai didi

c - 创建指向最初由 malloc 创建的区域的新指针时,我是否应该调用 free

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:19 26 4
gpt4 key购买 nike

在下面的代码中,我是否需要“释放”指向使用 malloc 分配的内存区域的指针?释放主指针还不够吗?

char * parentArray = malloc( 10 * sizeof(char));
char * miniArray = &parentArray [1];
free(myArr);
// free(miniArray) ?

最佳答案

在您的代码中,parentArraymalloc 返回的值,这是需要传递给free 的值。 C 中执行动态内存分配的函数系列是:malloccallocrealloc。对这些函数之一未返回的值调用 free 或对同一值调用 free 两次是未定义的行为。

确实存在调用 malloc 并返回结果的其他函数,例如 strdup,因此也必须释放这些指针。 strdup 的文档会告诉您这一点。通常,在编写 C 语言时,您必须了解谁负责分配和释放内存,并确保将此“契约(Contract)”记录在案。

关于c - 创建指向最初由 malloc 创建的区域的新指针时,我是否应该调用 free,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48483102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com