gpt4 book ai didi

C malloc 函数抛出内存错误

转载 作者:行者123 更新时间:2023-11-30 18:56:42 26 4
gpt4 key购买 nike

我的功能有问题。

char *readFnName(char *fnString, int n, int offset, int *size) {
char *fnName;
int nameBuffer, i, j;

i = offset;
j = 0;
nameBuffer = 8;
fnName = (char *)malloc(nameBuffer);

while(*(fnString + i) != '(' && i<n) {
*(fnName + j++) = *(fnString + i++);
if (j>=nameBuffer) {
nameBuffer += 8;
fnName = (char *)realloc(fnName, nameBuffer);
}
}

*(fnName + j++) = '\0';
*size = j;

return fnName;
}

我将此函数添加为一个字符串,并且读得很好,但是我在循环中运行此函数,并且在第三次迭代中此行被粉碎:

fnName = (char *)malloc(nameBuffer);

我在 netbeans 调试器中收到一条消息:

malloc(): memory corruption: 0x08a62218

我使用 netbeans 和 lubuntu。

最佳答案

您发布的代码没有问题。运行时错误消息表明程序中早期可能存在堆损坏,稍后调用 *alloc 函数会显示这一点。

尝试在整个程序上运行 valgrind,它可能会发现一些东西。如果做不到这一点,请仔细检查使用 malloc 缓冲区的代码,以确保它不会溢出它们。您可能必须分而治之才能找出程序的哪一部分有问题。

关于C malloc 函数抛出内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23598235/

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