老实说,我是c的新手。因此,像malloc和realloc这样的东西是外来概念。我认为我已经掌握了基础知识,但我不能完全达到100%。
while (int args = scanf("%s", string)) {
if (args < 0) break;
count++;
if (array == NULL) {
array = (char *) malloc(strlen(string));
if (array == NULL) {
printf("Error allocating memory");
exit(1);
}
} else {
printf("%s %d\n", string, strlen(string));
array = (char *) realloc(array, (sizeof(array) + strlen(string) + 1));
if (array == NULL) {
printf("Error allocating memory");
free(array);
exit(1);
}
printf("%lu\n", sizeof(array));
}
strcpy(&array[count - 1], string);
}
它是从终端读取 - 猫文件| ./program,只是一堆任意长度的单词。我正试图将它们全部放入一个数组(数组)中。
编辑:我应该知道我正在尝试访问我没有分配的内存:malloc: *** error for object 0x7fe9e04039a0: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
Segmentation fault: 11
答案 0 :(得分:2)
看起来你不明白C中的指针,字符串和char *是什么。例如,here是一些描述。
以下是主要问题:
答案 1 :(得分:1)
为简化流程,我最终选择char ** array
代替char * array
。对于我的while循环的每次迭代(顺便说一下,现在while (scanf("%s", string) > 0)
符合gcc标准(我最初用g ++编译)),realloc
使用count
x { {1}}然后我最终可以sizeof(char *)
,array[count - 1] = (char *) malloc(sizeof(string + 1)