使用malloc循环来保证malloc的结果是不好的吗?



这样分配内存是不好的做法吗?:

FOO *foo;
while (!(foo = malloc(sizeof(FOO)))) ;

我不知道有什么不好的做法,但这种做法并不常见。malloc()故障通常表明您的程序不太可能从中恢复的主要系统问题。如果您的系统不同,您的示例可能非常实用。

注意:这个答案假设sizeof(FOO)是"合理的",并且你的malloc()不会因为你要求太多内存而拒绝。

这并不能"保证"malloc()的结果。如果malloc返回NULL,可能是有原因的(例如内存不足)。你可能会把自己扔进一个无限循环。

此外,如果您在Linux平台上运行此命令:

默认情况下,Linux遵循乐观内存分配策略。这意味着当malloc()返回非null时,不能保证内存确实可用。

这意味着假设一次又一次调用malloc确实返回了一些非null的东西,由于Linux的"乐观"策略,非null仍然不能保证你得到任何可以工作的东西。

我认为这段代码会让你成为调试的噩梦。

相关内容

  • 没有找到相关文章

最新更新