VS中默认栈空间大小是1M.
你这么大栈空间申请, 到底会不会栈溢出, 取决你程序的复杂度.
如果你只是一个main函数的dos窗口程序, 那多半是无问题的.
但如果是一个复杂的窗口程序中的某些常用类有这样的大内存申请, 又不是new出来的. 那就需要注意了.超过一个大小, 最好使用new吧.  不要太在意内存碎片.

解决方案 »

  1.   

    new使用的不是堆栈的空间是吗?new使用的是类似于malloc这样的申请内存方式申请到的内存是吗?
      

  2.   

    new使用的不是堆栈的空间是吗?new使用的是类似于malloc这样的申请内存方式申请到的内存是吗?分堆空间和栈空间。
    new和malloc用堆空间。
    其它的方式用栈空间。
    堆空间是堆空间,栈空间是栈空间。不要说堆栈空间,这是两不同的东西。
      

  3.   

    new使用的不是堆栈的空间是吗?new使用的是类似于malloc这样的申请内存方式申请到的内存是吗?分堆空间和栈空间。
    new和malloc用堆空间。
    其它的方式用栈空间。
    堆空间是堆空间,栈空间是栈空间。不要说堆栈空间,这是两不同的东西。
    汇编语言中的PUSH指令,不就是把一个数压入到堆栈中的吗?我记得当时就叫“堆栈”。
      

  4.   

    最好还是不要申请这么大的数组,
    实在要用就改下堆栈大小
    #pragma comment(linker, "/STACK:100000000,100000000")
      

  5.   

    VS每个线程默认栈为1M,如果单独调用一次函数一般不会溢出,但如果存在多层的函数调用,则有可能栈会溢出
    建议使用new 申请需要的字节,new的空间仍然可以按char c[25][25][25][25]形式对待和使用
      

  6.   

    new使用的不是堆栈的空间是吗?new使用的是类似于malloc这样的申请内存方式申请到的内存是吗?分堆空间和栈空间。
    new和malloc用堆空间。
    其它的方式用栈空间。
    堆空间是堆空间,栈空间是栈空间。不要说堆栈空间,这是两不同的东西。
    汇编语言中的PUSH指令,不就是把一个数压入到堆栈中的吗?我记得当时就叫“堆栈”。 stack和heap
      

  7.   

    static char c[25][25][25][25];
    在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。