问下malloc正常情况下失败的概率
一般malloc如果失败了,就应该意味着程序无法继续运行了吧
难道还有申请一个1K的空间失败了,在申请一个1K又成功的情况么
[解决办法]
一般小内存malloc失败的几率很小;
大内存失败的几率还是比较大的, 这时一般需要判断, 就算程序不得不终止也要友好的终止, 不能崩溃;
[解决办法]
并不意味着无法继续运行,只是进入到另外一个分支而已。
如果两次分配之间,存在内存释放就可能出现这种情况。
[解决办法]
实话告诉你,在程序被系统kill之前你是没机会看到malloc=NULL的。
[解决办法]
malloc失败,程序没有停,你也可以停了。。。
[解决办法]
当然有可能:
void * s = malloc(~0);
printf("1024M:%p\n", s);
if (s == NULL)
{
s = malloc(1024 * 1024);
printf("1M:%p\n", s);
}
free(s);
[解决办法]
malloc失败的几率。。很小吧。。
[解决办法]
这种的确是不行了, 小一些是会被Kill的,。