gpt4 book ai didi

c - 为什么在使用 realloc() 时出现段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:32 29 4
gpt4 key购买 nike

这个小型测试程序正在从命令行读取字符串,但我遇到了段错误。谁能帮我?

我还想问一下realloc()malloc()有什么区别?我的意思是我认为 realloc() 更聪明,那么为什么我们还需要 malloc()?对于 malloc() 我知道我们必须将字符串和 malloc() 复制到新内存中,但是谁能给我举个例子吗?

#include <stdio.h>
#include <stdlib.h>


//reading the string from the command line
int
main(int argc, char *argv[]){
char** inputStrings;


int i;
for(i=1;i<argc;i++){
inputStrings=realloc(*inputStrings,i*sizeof(argv[i]));

inputStrings[i-1]=argv[i];

}
for(i=0;i<argc-1;i++){

printf("what is in the address: %s\n",inputStrings[i]);
}

free(inputStrings);
return 0;



}

最佳答案

你忘了分配内存给char** inputStrings;

要解决,

  1. 分配内存给inputStringsinputStrings[i] . [ malloc()/calloc() ]

或者,

  1. 分配内存给inputStrings并设置 inputStrings[i]NULL之前 realloc() .

检查 man pagerealloc() .

注意:请学习使用调试器,例如gdb .它真的有助于查明上述错误。


编辑:

inputStrings=realloc(*inputStrings,i*sizeof(argv[i]));

也是错误的概念。您必须将内存分配给 inputStringsinputStrings[i]分别地。检查this answer寻求有关此方面的帮助。

关于c - 为什么在使用 realloc() 时出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27200845/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com