gpt4 book ai didi

c - 信号 SIGTRAP 免费崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:06 46 4
gpt4 key购买 nike

我正在为 Windows 命令行编写一个基于控制台的小型应用程序。

我正在为两个数组 chichi_comp 分配内存,如下所示:

/* allocating memory for chi */
if ((chi = (int *)malloc(cm * sizeof(int))) == NULL)
{
printf("Error allocating %i bytes of memory.\n", lm * sizeof(int));
return CMD_NONE;
}

/* allocating memory for chi_comp */
if ((chi_comp = (int *)malloc(cm * sizeof(int))) == NULL)
{
printf("Error allocating %i bytes of memory.\n", cm * sizeof(int));
return CMD_NONE;
}

稍后我在代码中初始化它们

for (i = 0; i < cm; i++)
{
chi[i] = -1;
chi_comp[i] = -1;
}

像这样使用它们

chi[grade] = i;
chi_comp[i] = grade;

if (chi_comp[i] != -1)
{
printf(" %i ", v[chi_comp[i]][0]);
}

使用它们工作正常,但是当我不再需要它时尝试释放内存时,程序崩溃了。

free(chi);
free(chi_comp);

使用 gdb 调试结果如下:

warning: HEAP[m.exe]: warning: Heap block at 003518B8 modified at 003518CC past requested size of c

Program received signal SIGTRAP, Trace/breakpoint trap. 0x776f0b2d in ntdll!RtlpNtEnumerateSubKey () from C:\Windows\system32\ntdll.dll

在这种情况下,chi 值 003518C0 和 chi_comp 值 003518E8

最佳答案

来自错误信息:

warning: HEAP[m.exe]: warning: Heap block at 003518B8 modified at 003518CC past requested size of c

我怀疑您在代码的某处越界了,所以请检查您的计数器。告诉我的是过去请求的大小。请务必阅读错误消息两次,它们是为了您好。 :)


下次发帖时,确保提供一个最简单的例子。

关于c - 信号 SIGTRAP 免费崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852335/

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