我将动态分配的变量传递给一个函数,然后从中返回
函数,当我对代码运行输入时,其中一些输入会使程序崩溃。
如您所见,我测试了argv
数组两次,一次在divide
结束时,另一次
从divide
返回后的时间。在第一次检查中,我从
索引argv
到0
,但在argc
检查中(从2nd
返回到divide
后)
indexmain
使0
循环崩溃。
很明显我做错了什么,知道吗?
最佳答案
argv =(char**) realloc(argv, (current+1)*sizeof(char*));
这可能是罪魁祸首。调用
realloc()
可以分配一个新的(可能更大的)内存块,将旧块中的数据复制到其中,然后释放旧块。问题不在于你改变了argv
中main()
的值,而在于你没有改变它。您正在释放它指向的块,而不更新main()的argv
来指向新块。关于c - 将char **传递给函数,是否不更改其值,还是呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10726287/