Malloc 失败并返回 errno 12
Malloc fails with errno 12
我 read/write 将数据保存到我曾经写过的自定义原始文件中
version (int)
data
我实现了一种更通用的方式来写入我的数据,现在预期的格式是
headersize (size_t)
header (headersize)
data
因此,我手动将 4
(sizeof(int)
) 添加到旧的原始文件(带有 ghex
)以使其与新实现兼容。
现在,当我想从原始文件中读取 header
的 header_p
malloc
-ing space 时,我的程序失败了。
size_t headersize;
fread(&headersize, sizeof(size_t), 1, fd);
printf("%p\t%d\n", header_p, (int) headersize);
header_p = malloc(headersize);
printf("%p\t%d\t%d\t%s\n", header_p, (int) headersize, errno,strerror(errno));
Returns
(nil) 4
(nil) 4 12 Cannot allocate memory
为什么 malloc
这样的操作会失败? headersize
似乎正确地硬写在原始文件中,因为它等于 4
并且 12
的 errno
似乎表明我没有足够的内存但是当我在 malloc
调用中硬编码 sizeof(int)
,故障不再发生。
size_t headersize;
fread(&headersize, sizeof(size_t), 1, fd);
printf("%p\t%d\n", header_p, (int) headersize);
header_p = malloc(sizeof(int));
printf("%p\t%d\t%d\n", header_p, (int) headersize, errno);
Returns
(nil) 4
0x8e6e90 4 0
我怀疑 12 的 errno
隐藏了其他东西,但我不明白是什么。
我 read/write 将数据保存到我曾经写过的自定义原始文件中
version (int)
data
我实现了一种更通用的方式来写入我的数据,现在预期的格式是
headersize (size_t)
header (headersize)
data
因此,我手动将 4
(sizeof(int)
) 添加到旧的原始文件(带有 ghex
)以使其与新实现兼容。
现在,当我想从原始文件中读取 header
的 header_p
malloc
-ing space 时,我的程序失败了。
size_t headersize;
fread(&headersize, sizeof(size_t), 1, fd);
printf("%p\t%d\n", header_p, (int) headersize);
header_p = malloc(headersize);
printf("%p\t%d\t%d\t%s\n", header_p, (int) headersize, errno,strerror(errno));
Returns
(nil) 4
(nil) 4 12 Cannot allocate memory
为什么 malloc
这样的操作会失败? headersize
似乎正确地硬写在原始文件中,因为它等于 4
并且 12
的 errno
似乎表明我没有足够的内存但是当我在 malloc
调用中硬编码 sizeof(int)
,故障不再发生。
size_t headersize;
fread(&headersize, sizeof(size_t), 1, fd);
printf("%p\t%d\n", header_p, (int) headersize);
header_p = malloc(sizeof(int));
printf("%p\t%d\t%d\n", header_p, (int) headersize, errno);
Returns
(nil) 4
0x8e6e90 4 0
我怀疑 12 的 errno
隐藏了其他东西,但我不明白是什么。