面试题答案
一键面试#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体
typedef struct {
int data[10000];
} BigStruct;
int main() {
BigStruct *bs;
bs = (BigStruct *)malloc(sizeof(BigStruct));
if (bs == NULL) {
perror("malloc failed");
return 1;
}
// 后续可以在这里使用分配好的内存
free(bs); // 使用完后释放内存
return 0;
}
原因:malloc
函数在内存分配失败时会返回NULL
。因此通过检查malloc
的返回值是否为NULL
,可以判断内存分配是否成功。如果返回NULL
,说明内存分配失败,此时使用perror
函数打印错误信息,该函数会输出与最近一次系统调用相关的错误信息,便于调试。同时返回一个非零值表示程序异常结束。如果分配成功,则可以继续使用分配到的内存,使用完后要记得调用free
函数释放内存,避免内存泄漏。