Realloc触发了一个断点

Realloc触发了一个断点,c,memory-leaks,realloc,C,Memory Leaks,Realloc,它触发了一个断点。 Realloc在重新分配时会复制所有数据,因此它一定复制了“我是一名大学生”。为什么会发生这种错误 在那之后。在释放内存部分。我没试过,但一定是出了什么问题。我还没弄明白。 感谢您帮助我您使用的realloc错误: 这是错误的 temp = (char**)realloc(a, n * sizeof(char*)); 您真的确定要为a[i]分配(strlen(pc)+1)*sizeof(wchar\u t)字节吗?你真的在和我打交道吗 wchar\t这里是字符串吗?

它触发了一个断点。 Realloc在重新分配时会复制所有数据,因此它一定复制了“我是一名大学生”。为什么会发生这种错误

在那之后。在释放内存部分。我没试过,但一定是出了什么问题。我还没弄明白。
感谢您帮助我

您使用的
realloc
错误:

这是错误的

    temp = (char**)realloc(a, n * sizeof(char*));
您真的确定要为
a[i]
分配
(strlen(pc)+1)*sizeof(wchar\u t)
字节吗?你真的在和我打交道吗
wchar\t
这里是字符串吗?在这种情况下,最好将
a
声明为
wchar\u t**a
相反

另请注意:

    temp = (char**)realloc(a, n * sizeof(char*));
temp = (char**)realloc(a, n * sizeof(char*));

if (temp)
{
    a = temp;
    free(temp);  // <-- wrong, you cannot do that
    temp = NULL;
}
...
temp = realloc(a, n * sizeof *a);

if(temp == NULL)
{
    // DO the error handling
    for(int k = 0; k < n; ++k)
        free(a[i]);
    free(a);
    break; // or return
}

a = temp;

a[n - 1] = malloc(strlen(pc) + 1);
...