大家好:
我的本意是想定义3个double型的数组,大小有2000000,编译时大了。
我这样解决:
double *p1=(double*)malloc(sizeof(double)*2000000);
double *p2=(double*)malloc(sizeof(double)*10000);
double *p3=(double*)malloc(sizeof(double)*10000); 最后释放
free(p1);
free(p2);
free(p2);
程序运行时有一个警告。好像有什么问题。
现在我的问题是:malloc函数好像不一定能申请内存成功,如果不成功,我怎样解决这个问题?
谢谢大家!望高手指点!
我的本意是想定义3个double型的数组,大小有2000000,编译时大了。
我这样解决:
double *p1=(double*)malloc(sizeof(double)*2000000);
double *p2=(double*)malloc(sizeof(double)*10000);
double *p3=(double*)malloc(sizeof(double)*10000); 最后释放
free(p1);
free(p2);
free(p2);
程序运行时有一个警告。好像有什么问题。
现在我的问题是:malloc函数好像不一定能申请内存成功,如果不成功,我怎样解决这个问题?
谢谢大家!望高手指点!
解决方案 »
- VC如何获取局域网计算机列表中的共享目录
- Bluetooth发送问题
- VC6 提取exe文件的图标 在线等
- 如果CreateFileMapping的是一个EXE文件,怎么让它运行?
- 请教vc socket编程高手:一个关于CSocket的很怪异的问题
- 连接错误,哪位知道怎么解决。nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)
- 紧急求救!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 谁知道如何获取WIN8系统里面的DPI比例,如下图里面的设置
- 高手请进来教导一下,关于内存泄漏的问题
- 7.CDialog::EndDialog与CWnd::DestroyWindow的联系?可用destroywindow关闭一对话框吗?
- 新手入门,mfc中请问怎样把文本文件中的内容导入编辑框
- mschart 运行到 m_Chart.GetDataGrid().SetData(1, 1, 0, 0); 出错
if(NULL == p1)
{
不成功处理;
}
其他类似。
使用宏定义函数assert(int expression)
如果表达式的值为假,即0,在这里就是表示内存未分配成功,就会报错。
一般咱们在写程序的时候最好是在分配内存之后,用这个函数做个判断,以免产生不必要的麻烦!
double *p1=(double*)GlobalAlloc(GMEM_ZEROINIT, sizeof(double)*2000000);
double *p2=(double*)GlobalAlloc(GMEM_ZEROINIT, sizeof(double)*10000);
double *p3=(double*)GlobalAlloc(GMEM_ZEROINIT,sizeof(double)*10000);
//释放内存
GlobalFree((HGLOBAL)p1);
GlobalFree((HGLOBAL)p2);
GlobalFree((HGLOBAL)p3);
2,内存最大堆为1G,需要超过就改用64bit的操作系统,
如,windows sever 2003 64bit, 2、3G我都new过。