linux 下从c++动态内存操作问题,heap size不够还是别的?# Programming - 葵花宝典
r*e
1 楼
没有使用STL的情况下,有如下程序:
int *array = new int(1000000);
if (array == 0) cout<for (...) //赋值
array[i] = 随机数;
但是当i=33790后,就出现segmentation fault,
试过多次总是在33790后出错。如果array换成double
则改为在33790/2 = 16895后出错。显然和memory size
有关系。
既然array pointer没有返回空值,说明内存申请到了,但是
为什么出错呢?是系统heap size不够还是什么别的原因?
ulimit -a 显示stack size 为(kbytes -s) 10240, 而
33790×4没有10240k大啊?man ulimit说单位是1024byte,
也不知道ulimit -a中显示的到底是byte呢还是kbyte。
反正试过‘ulimit -s 很大的数’ 也没区别。
另外,如果用 int array[1M]的话,可以运行,但是到3M左右
就又是segmen
int *array = new int(1000000);
if (array == 0) cout<for (...) //赋值
array[i] = 随机数;
但是当i=33790后,就出现segmentation fault,
试过多次总是在33790后出错。如果array换成double
则改为在33790/2 = 16895后出错。显然和memory size
有关系。
既然array pointer没有返回空值,说明内存申请到了,但是
为什么出错呢?是系统heap size不够还是什么别的原因?
ulimit -a 显示stack size 为(kbytes -s) 10240, 而
33790×4没有10240k大啊?man ulimit说单位是1024byte,
也不知道ulimit -a中显示的到底是byte呢还是kbyte。
反正试过‘ulimit -s 很大的数’ 也没区别。
另外,如果用 int array[1M]的话,可以运行,但是到3M左右
就又是segmen