首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问下malloc通常情况下失败的概率

2013-07-08 
问下malloc正常情况下失败的概率一般malloc如果失败了,就应该意味着程序无法继续运行了吧难道还有申请一个

问下malloc正常情况下失败的概率
一般malloc如果失败了,就应该意味着程序无法继续运行了吧

难道还有申请一个1K的空间失败了,在申请一个1K又成功的情况么
[解决办法]
一般小内存malloc失败的几率很小;
大内存失败的几率还是比较大的, 这时一般需要判断, 就算程序不得不终止也要友好的终止,  不能崩溃;
[解决办法]

引用:
一般malloc如果失败了,就应该意味着程序无法继续运行了吧

难道还有申请一个1K的空间失败了,在申请一个1K又成功的情况么


并不意味着无法继续运行,只是进入到另外一个分支而已。
如果两次分配之间,存在内存释放就可能出现这种情况。
[解决办法]
实话告诉你,在程序被系统kill之前你是没机会看到malloc=NULL的。
[解决办法]
malloc失败,程序没有停,你也可以停了。。。
[解决办法]
引用:
实话告诉你,在程序被系统kill之前你是没机会看到malloc=NULL的。


当然有可能:


void * s = malloc(~0);

printf("1024M:%p\n", s);

if (s == NULL)
{
s = malloc(1024 * 1024);

printf("1M:%p\n", s);
}

free(s);

[解决办法]
malloc失败的几率。。很小吧。。
[解决办法]
引用:
Quote: 引用:

实话告诉你,在程序被系统kill之前你是没机会看到malloc=NULL的。


当然有可能:


void * s = malloc(~0);

printf("1024M:%p\n", s);

if (s == NULL)
{
s = malloc(1024 * 1024);

printf("1M:%p\n", s);
}

free(s);


这种的确是不行了, 小一些是会被Kill的,。

热点排行