【发布时间】:2021-05-16 03:27:36
【问题描述】:
我正在执行以下 C 程序并收到运行时错误为“free(): Invalid Pointer”
#include<stdio.h>
#include<stdlib.h>
static void freeArgs(char** args);
int main()
{
char** argv = calloc(4, 10);
int argc = 0;
argv[argc++]="yogita";
argv[argc++] ="negi";
argv[argc] = NULL;
freeArgs(argv);
return 0;
}
static void freeArgs(char** args)
{
char** af = args;
for (; *af; af++)
free(*af);
free(args);
}
谁能给我建议解决方案?
【问题讨论】:
-
你永远不会
malloc(或callor或realloc)argv中的指针。然而你将它们传递给free? -
另外,如果
sizeof(char *) != 4(就像在典型的 64 位系统上一样),您认为会发生什么? -
别在意我的近距离投票,糟糕的重复。我懒得找更好的了。
标签: c dynamic-memory-allocation free c-strings calloc