在c中的主函数中初始化的变量存储在哪里?
在C语言中,我知道当使用malloc动态初始化一个变量时,它将存储在堆区中。 但是,在完成下面类型的声明并且稍后初始化变量时分配的内存在哪里。
int a[26];
要么
int a[n]; //n is a variable and each element in array a is later initialized through a for loop.
我最初的理解是,就像在java中一样,这里main函数中声明的所有变量都存储在堆栈区中。 我的疑问是 - 说,有一个函数需要数组“a”的地址并更改其内容。 要更改“a”的内容,它应该能够访问“a”中的每个元素的地址。 由于函数本身在主函数顶部的堆栈空间中执行,因此无法直接访问数组“a”的内容。 所以,我的疑问是数组“a”的内存分配在哪里?
通常, int a[n];
被称为可变长度数组,并且存储分配与编译器相关。
例如, gcc
在堆栈内存中分配VLA。
FWIW,局部变量通常也存储在堆栈内存中(如果有的话,减去编译器优化)。
数组几乎可以是任意长度,它们可以用来存储数千甚至数百万个对象,但是数组的大小必须在数组创建时决定。 数组中的每一项都可以通过索引来访问,索引只是一个数字,用于指示数组中存储对象的位置或插槽。
数组大小存储在计算机物理内存中
链接地址: http://www.djcxy.com/p/14479.html上一篇: where are the variable stored that are initialized in main function in c?