gpt4 book ai didi

c - "malloc"ed 内存是否被隐式释放?

转载 作者:行者123 更新时间:2023-11-30 18:20:18 25 4
gpt4 key购买 nike

考虑使用 malloc 定义的 (char *) 变量 sTmp

如果我将另一个变量分配给此 sTmp,通过该变量分配的内存是否会自动释放,或者该内存块是否会保持分配(且无用)直到进程结束?

让我用代码来解释一下:

int main () {
char *sTmp = (char *) malloc (50);
char *sNew = strdup ("some text"); // length is less than 50
sTmp = sNew;
/* now sTmp points to sNew and it's length is 10 chars
I wonder, what happened to the allocated memory of 50 chars in the first line;
Does it get freed implicitly or remain allocated?
*/
}

最佳答案

Does “malloc”ed memory get freed implicitly?

不,C 中没有垃圾收集器机制。

您必须显式释放使用malloc分配的内存

sTmp = sNew;

此赋值语句会导致内存泄漏,请在赋值之前释放对象。

关于c - "malloc"ed 内存是否被隐式释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084610/

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