【发布时间】:2012-12-20 06:35:51
【问题描述】:
我可以将 malloc 放在 do...while 块中以确保成功分配吗?
喜欢:
#define STR_SIZE 1024 * 1024
char *str;
do
str = (char *) malloc(STR_SIZE);
while ( !str );
【问题讨论】:
-
最好解释一下你正在编写什么样的应用程序。
-
@BasileStarynkevitch ,
typedef struct _LIST LIST, *PLIST; struct _LIST { PLIST pre; PLIST next; }; /* Create a new node */ PLIST node; do node = (PLIST) malloc(sizeof(LIST)); while (!node); -
请编辑您的问题。但这并不能描述您正在编码的应用程序是什么种类?它是一个服务器应用程序,应该尽可能长时间地运行(即使资源有限),还是一个命令行应用程序?它是一些对生命至关重要的嵌入式应用程序(例如起搏器软件)吗?为什么你绝对希望
malloc成功?你知道malloc的故障模式吗?? -
@BasileStarynkevitch , 这是一个命令行工具。
-
然后,您只需要在
malloc失败时以perror退出。在这种情况下无需确保成功分配。