【发布时间】:2013-12-09 18:46:28
【问题描述】:
我创建了一个代码,它基本上会根据字符串的大小创建一个数组分配,并在 for 循环中存储一个指向分配数组的指针:
int Note;
int ifd;
char **pointer[ir];
for (Note = 0; Note < ir; ++Note) {
char ** Temp=malloc(Count(' ',Sentences[Note])*sizeof(char *));
ifd=StoreArr(Sentences[Note],Temp," ");
pointer[Note]=&Temp;
printer(*(pointer[Note]),ifd);
}
char **temp 应该在每次函数启动时创建一个新数组,并且指针应该存储一个指向创建的数组的指针。当我打印创建的数组时,`(printer(pointer[Note]),ifd))。输出正确:
hello
ola
hiya
howdy
eitan
eitanon
eitanya
但在退出 for 并尝试打印第一个字符串数组后,我只收到 艾坦 艾塔农 艾坦亚
因此,我可以假设 Temp 分配不会创建新内存,而是简单地覆盖现有分配。 我的问题是如何解决这个问题,以便每次为 Temp 分配新内存,从而为句子中的所有数组分配空间"
谢谢
【问题讨论】:
-
我真的不明白这种敌意。我只是想学习语言的基础...我从来没有声称自己是专业人士,我正在读一本书。我确实得到了一堆分配警告,但我根本不明白如何解决这些问题。
-
检查 realloc 手册页可能会对您有所帮助,link