s*****s 发帖数: 27 | 1 用GDB调试过
我得程序流程大致如此:
我有个数组,类型是自己定义得,刚开始我要把这个数组
得所有元素用读进来得二进制文件数据初始化
现在问题是,在前N个循环都正常,可是到n+1个数组
初始化时候在
m_pData = new double[size] 时出问题,程序执行这一行
就立即退出了,所以我看不出问题,一般来说我可以判断
m_pdata是否为空,是不是?但是现在都论不到我这一步
判断。
btw,我得数据很大,比较占内存,但是1G的内存应该够的,
因为我的linux服务器上就是这么多,这台SUN服务器内存
不比这个少。 |
s*****s 发帖数: 27 | 2 从Linux跑的进程来看,大概需要250M内存
【在 s*****s 的大作中提到】 : 用GDB调试过 : 我得程序流程大致如此: : 我有个数组,类型是自己定义得,刚开始我要把这个数组 : 得所有元素用读进来得二进制文件数据初始化 : 现在问题是,在前N个循环都正常,可是到n+1个数组 : 初始化时候在 : m_pData = new double[size] 时出问题,程序执行这一行 : 就立即退出了,所以我看不出问题,一般来说我可以判断 : m_pdata是否为空,是不是?但是现在都论不到我这一步 : 判断。
|
p******g 发帖数: 347 | 3 write a simple piece of test code, just try to new all the mem u need see if i
t will crash the code.
Another way is the catch the throw from new
try { aData = new double{size}; }
catch (std::bad_alloc&) { cerr<<"Out of Mem"<
Yet another way is the use the new's handler, it and its usage are declared in
as
typedef void (*new_handler)();
new_handler set_new_handler(new_handler p) throw();
you will need to use it this way
#include
// function to call if opera
【在 s*****s 的大作中提到】 : 从Linux跑的进程来看,大概需要250M内存
|
c*r 发帖数: 278 | 4 run "limit" and see if "datasize" is limited
【在 s*****s 的大作中提到】 : 用GDB调试过 : 我得程序流程大致如此: : 我有个数组,类型是自己定义得,刚开始我要把这个数组 : 得所有元素用读进来得二进制文件数据初始化 : 现在问题是,在前N个循环都正常,可是到n+1个数组 : 初始化时候在 : m_pData = new double[size] 时出问题,程序执行这一行 : 就立即退出了,所以我看不出问题,一般来说我可以判断 : m_pdata是否为空,是不是?但是现在都论不到我这一步 : 判断。
|
s*****s 发帖数: 27 | 5 真够专业,试试看
【在 p******g 的大作中提到】 : write a simple piece of test code, just try to new all the mem u need see if i : t will crash the code. : Another way is the catch the throw from new : try { aData = new double{size}; } : catch (std::bad_alloc&) { cerr<<"Out of Mem"<: Yet another way is the use the new's handler, it and its usage are declared in : as : typedef void (*new_handler)(); : new_handler set_new_handler(new_handler p) throw(); : you will need to use it this way
|