gpt4 book ai didi

c - char string[100] 和 char *string = malloc(100) 之间的区别

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

如果它确实分配内存,为什么不需要释放字符串?

如果你这样做的话,就像你会做的那样:

char *string;
string = malloc(100);

它是否可能在某些方面有所不同,因为 char[100]是静态的,另一种方式是动态的?

最佳答案

char string[100]; 只要变量存在,就会分配内存。

如果它是静态变量,则只要程序运行即可。该变量在 bssdata 段(或 rodata 或编译器链接器系统认为合适的任何其他段)中静态分配。/p>

如果它是一个动态(C 标准中的“自动”)变量,则只要包含 block 运行即可。变量最常在堆栈上分配,并且当调整堆栈指针时,空间会在 block 末尾自动“释放”。

相反,如果您使用malloc(),则通常在堆上分配空间。如果完成,您必须自己管理它,通过 free() 将其返还。

所以,从字面上回答你的问题,char string[100];确实通过malloc( )。因此不需要调用free(),否则会出错。

关于c - char string[100] 和 char *string = malloc(100) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58154387/

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