[英]How to prevent calloc failure crashing my program?
如何防止以下代码使程序崩溃?
::MessageBox(NULL, L"before", NULL, MB_OK);
void* x = ::calloc(1, -1);
::MessageBox(NULL, L"after", NULL, MB_OK);
当我运行此代码时,出现“ before”消息框,然后程序崩溃并显示“ unhandled win32 exception”(“ after”消息框从不出现)。
我知道calloc的args通过请求太多内存而使其崩溃! 我想知道的是如何防止崩溃,以便我能重新获得控制权并以其他方式处理内存不足的问题?
(Windows XP,Visual Studio 2005)
看起来这是Microsoft calloc中的错误(应该返回null,而不是崩溃):
因此,您需要使用其C运行时的较新版本。
如果使用malloc,则只需(x == NULL){return GetLastError();}
这不是一个真正的答案,因为我建议使用另一个功能,但它应该可以工作。 还要检查SetErrorMode
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.