相关疑难解决方法(0)

C阵列实例化 - 堆栈或堆分配?

我保证之前已经问过这个问题,但是我无法通过搜索找到它; 对于任何裁员,提前抱歉.

这是我(可能错误的)理解,只有在编译时知道对象的大小时才分配给堆栈.因此,在初始化数组的情况下,您可以执行其中一个(这应该在堆栈上):

char charArray[50];
Run Code Online (Sandbox Code Playgroud)

由于此数组的大小在编译时是已知的,因此应该没有问题.

另一方面,这(我相信)也是有效的代码:

char anotherCharArray[someVariable + 50];
Run Code Online (Sandbox Code Playgroud)

这也会在堆栈上进行吗?我很确定代码段错误,如果你释放()这个,所以它让我觉得它确实如此,但它对我来说真的没有意义.同样,100%唯一的情况是,当通过malloc分配数据时,你必须使用free()?

在此先感谢您的帮助.

c heap stack memory-management

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1

heap ×1

memory-management ×1

stack ×1