请教C中的数组是存在栈中,还是堆中


请问C中的数组是存在栈中,还是堆中?
如题,请问C语言中,数组是存在堆中还是栈中呢?

c语言 基本概念 程序开发

zzing 12 years, 6 months ago

malloc或new的数组存在堆中

不带static前缀的局部数组在栈中

带static前缀的局部数组和全局数组在全局数据区中

恶作剧的傀儡 answered 12 years, 6 months ago

那看你要怎么定义了

1.要是全局静态常量字符组,那就在静态区

2.模块内部的话大部分都是在栈中

3.像三楼讲,要是自己手动分配地址那肯定在堆中啊,所有malloc的空间都是在堆中申请

我是来求图包的 answered 12 years, 6 months ago

参考


<fieldset> <legend class="font_bold"> 引用: </legend>

  如题,请问C语言中,数组是存在堆中还是栈中呢?

</fieldset>


故乡的茶干 answered 12 years, 6 months ago

  int a[100] = {0} // 这是在栈中的
int a[100] = malloc(sizeof(int)*100); // 这是在堆中的


玖·月神殿 answered 12 years, 6 months ago

  自己new malloc 是存放在堆中的!

其他应该都是由系统管理的,
大部分在栈中,也有可能在静态区,看你怎么申明定义了


黑神めだか answered 12 years, 6 months ago

Your Answer