char string [100]是否分配内存? [复制]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

如果确实分配了内存,为什么不必释放字符串?

就像您这样做时一样:

char *string;
string = malloc(100);

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

c pointers malloc dynamic-memory-allocation
1个回答
0
投票

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

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

如果它是dynamic

(在C标准中为“自动”)变量,则只要包含块运行即可。该变量最通常在堆栈上分配,并且在调整堆栈指针后,该空间会在块的末尾自动“释放”。

相反,如果使用malloc(),则通常在堆上分配空间。完成后,您必须通过free()退还给您自己进行管理。

因此,为了从字面上回答您的问题,no

char string[100];确实not通过malloc()分配内存。因此,无需调用free(),这将是一个错误。
© www.soinside.com 2019 - 2024. All rights reserved.