我正在编写一些依赖于 calloc 的代码,并且想知道如果 calloc 失败,将指针重新指向堆栈空间是安全的,然后在调用 free() 之前将指针设置为 NULL 或完全跳过它。非常适合我的 386 linux 机器。
char *str = NULL;
int usestackspace = 0;
char str1[16] = {0};
str = (char *)calloc(1, sizeof(pid_t));
if (str == NULL) {
sleep(1);
str = (char *)calloc(1, sizeof(pid_t));
}
if (str == NULL) {
fprintf(stderr, "watchdog: %s\n", strerror(errno));
usestackspace = 1;
str = str1;
}
if (str == NULL) {
return -1;
}