我正在使用 Json 解析器在 Solaris 5.8、C++ 上工作。
问题是:在解析大于 700 MB 的文件时,进程因核心转储错误而崩溃。它大致发生在以下代码点 -
int printbuf_memappend(struct printbuf *p, char *buf, int size)
{
char *t;
if(p->size - p->bpos <= size)
{
int new_size = json_max(p->size * 2, p->bpos + size + 8);
if (!(t = realloc(p->buf, new_size)))
return -1;
p->size = new_size;
p->buf = t;
}
memcpy(p->buf + p->bpos, buf, size); // CORE DUMP HERE
p->bpos += size;
p->buf[p->bpos]= '\0';
return size;
}
你能帮忙找出问题吗?核心转储文件仅包含正在复制的数据。增加RAM可以解决吗?还是我需要将文件大小限制为 700MB?