【发布时间】:2016-05-17 02:40:36
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char **wordlist=(char **)malloc(sizeof(char*)*4);
for(int i=0;i<4;i++)
{
char *word=(char*)malloc(sizeof(char*)*20);;
scanf("%s",word);
wordlist[i]=word;
free(word);
}
for(int i=0;i<4;i++)
{
printf("at %d value is %s\n",i,wordlist[i]);
}
free(wordlist);
return 0;
}
所以问题如下:我可以根据需要多次运行此代码,当它读回数组时,当涉及到存储位置时,我会得到完全随机的结果。示例:如果输入是“foo bar is great”,它将输出以下“0 处的值是 1 处的 bar 值是 2 处的 bar 值是 3 处的大值是 foo”的任意组合
一个更大的程序的一部分,但这是我正在努力寻找解决方案(或正确实施)的概念。 :( 我已经搜索了谷歌的高低,以及这个网站,没有任何解决方案可以正常工作。感谢任何帮助!
【问题讨论】:
-
wordlist[i]=word; free(word);你认为这有什么作用?该行中的printf("at %d value is %s\n",i,wordlist[i]);wordlist[i]指向已释放的内存。访问释放的内存是未定义的行为(正如您亲身发现的那样)。
标签: c arrays pointers multidimensional-array malloc