C ++数组在内存中的存储位置

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

  • 静态变量存储在哪里(在C / C ++中)? 16个答案

  • 静态数组(在全局范围或名称空间中声明)将被放置在数据段中。 在函数范围内声明的本地数组将被放置在堆栈上。

    int g_global_array[2] = {4,5,6};  //Data Segment
    int main() {
         int local_array[3] = {1,2,3};  //Stack
         static int s_static = 10; //Also in the Data Segment (static)
         return 0;
    }
    

    (和普通老C一样)

    http://www.geeksforgeeks.org/memory-layout-of-c-program/


    是的,以这种方式声明的本地数组将被存储在堆栈中并具有固定长度。


    本地数组在堆栈中寻址。 有一个恒定的大小,不能增加。 如果在数组中写入的数值超过其可以包含的值,将会出现所谓的堆栈溢出。 在它们后面的字段中,存在其他值将被覆盖的记忆。 Visual Studio会创建一些保护字节来避免这种情况。

    链接地址: http://www.djcxy.com/p/87905.html

    上一篇: Storage location of C++ array in memory

    下一篇: How to marshall data structures from C/C++ into python and back