将char **传递给函数,不会改变它的值,或者它是什么?

时间:2012-05-23 19:06:43

标签: c linux arrays ubuntu

我将一个动态分配的变量传递给一个函数,然后从中返回 函数,当我在代码上运行输入时,其中一些输入会使程序崩溃。

正如您所看到的,我测试argv数组,两次,一次在divide结束,另一次 从divide返回后的时间。在第一次检查中,我获得了argv的所有值 索引0argc,但在2nd检查中(从divide返回main后) index 0使for循环崩溃。

显然我做错了什么,知道什么?

1 个答案:

答案 0 :(得分:1)

argv =(char**) realloc(argv, (current+1)*sizeof(char*));

这可能是罪魁祸首。调用realloc()可以分配一个新的(可能更大的)内存块,旧块中的数据被复制到该内存块中,然后解除分配旧块。问题不在于您在argv中更改main()的值,而是您更改它。您正在取消分配它指向的块而不更新main()的argv以指向新块。