提问人:Muszo 提问时间:7/30/2022 更新时间:7/30/2022 访问量:451
C malloc 故障
C malloc failure
问:
我偶然发现了一个内存分配问题。我正在编写一个简单的应用程序,它应该读取文件并从中获取信息。它应该非常简单(单线程),所以我想知道如果失败,我该怎么办?malloc()
calloc()
函数是否应该对程序进行一些错误消息或返回(或其他适当的返回值)并尝试再次分配内存?exit()
NULL
答:
1赞
Bill Morgan
7/30/2022
#1
如果 malloc 失败,您基本上有 3 个选项:
- 释放一些内存,然后重试。
- 不要分配,而是做其他事情。
- 退出程序。
假设您需要内存来存储一些数据,那么 2 将不是一个选项,在这种情况下,您要么执行 1 要么执行 3。
没有人能预测所有可能的程序,但我可以看到尝试分配但不使用内存的一个原因是在一个程序中,你只是在测试,看看在给定负载下可以在系统上分配多少内存。
无论如何,我认为 1 或 3 可能是大多数情况。
评论
errno
errno
errno
perror()
strerror()
errno
perror
perror
errno