我想学习c的内存管理。
我为 分配了内存1. char** a
2. char** b
3. char* b[0] ~ b[99]
和
为
释放内存1. char** a
2. char* b[0] ~ b[99]
3. char** b
然而,我在第33行得到了一个错误,这是free(b[0])
为什么会产生invalid next size free (fast)
?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char** a = (char**)malloc(100 * sizeof(char*));
a[0] = "Hello Again!";
char** b = (char**)malloc(100 * sizeof(char*));
int i = 0;
for(i = 0; i < 100; i++){
b[i] = (char*)malloc(10 * sizeof(char));
}
strcpy(b[0], *a);
free(a);
printf("%s", b[0]);
for(i = 0; i < 100; i++){
free(b[i]);
}
free(b);
return 0;
}
字符串"Hello Again!"
长度为13个字符(包括终止符