我将一个动态分配的变量传递给一个函数,然后从中返回 函数,当我在代码上运行输入时,其中一些输入会使程序崩溃。
正如您所看到的,我测试argv
数组,两次,一次在divide
结束,另一次
从divide
返回后的时间。在第一次检查中,我获得了argv
的所有值
索引0
到argc
,但在2nd
检查中(从divide
返回main
后)
index 0
使for
循环崩溃。
显然我做错了什么,知道什么?
答案 0 :(得分:1)
argv =(char**) realloc(argv, (current+1)*sizeof(char*));
这可能是罪魁祸首。调用realloc()
可以分配一个新的(可能更大的)内存块,旧块中的数据被复制到该内存块中,然后解除分配旧块。问题不在于您在argv
中更改main()
的值,而是您不更改它。您正在取消分配它指向的块而不更新main()的argv
以指向新块。