gpt4 book ai didi

c++ - 大输入段错误

转载 作者:行者123 更新时间:2023-11-28 03:46:23 26 4
gpt4 key购买 nike

我知道 segmentation fault 意味着进程试图访问它不允许访问的特定内存。

我正在运行其他人使用 C++ 编写的一些程序。当我的输入很大(大约 1GB)时,即使我请求 30GB 内存,也会出现段错误;而当输入尺寸很小时,它运行良好。

那我该怎么办?是不是内存不够?我真的是一个新手,对 C++ 了解不多。我什至不知道代码的哪一部分控制内存分配。

感谢 BLender,调试行是:

程序收到信号 SIGSEGV,段错误。
_IO_vfscanf_internal () 中的 0x0000003fbd653174
来自/share/bin/intel/cc/10.1.015/lib/tls/x86_64/libc.so.6

最佳答案

您的代码多次调用 malloc,但从未调用过 free,因此它使用了相当多的内存。而且它从不检查内存不足的情况...

我的建议是将所有对 malloc 的调用更改为如下内容:

size_t total_memory = 0;
void *my_malloc(size_t sz)
{
void *res = malloc(sz);
total_memory += sz;
if (res == NULL)
{
printf("Too much memory eaten: %zu\n", total_memory);
abort();
}
return res;
}
#define malloc(x) my_malloc(x)

看看会发生什么。

关于c++ - 大输入段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com