gpt4 book ai didi

c - 在 C 中,释放一半的内存块,而不释放另一半

转载 作者:行者123 更新时间:2023-12-01 15:35:19 24 4
gpt4 key购买 nike

如果我分配了一个内存块说

char *a =(char*)malloc(sizeof(char)*10);   

我愿意
strcpy( "string of len 5",a);   

那么有没有办法释放我剩余的部分内存块?
在其他情况下,如果我这样做
strcpy("string of len5", (a+5));

那么上半年将是空的。有没有办法 free()第一部分没有释放下半部分?

请不要建议 realloc()因为它在那里分配了一 block 新的内存复制内容并释放了以前的内容。(AKAIK)。

最佳答案

不,你不可能free()动态分配内存的一半或一部分。您需要 free()一次完成。

在通过动态内存分配获取内存的同时,你基本上得到了一个指针。您需要将确切的指针传递给 free() .传递指向 free() 的指针malloc() 没有返回或家人,是undefined behaviour .

仅供引用,请参阅 related answer .

关于c - 在 C 中,释放一半的内存块,而不释放另一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31584843/

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