繁体   English   中英

将char **传递给函数,是否不更改其值,还是呢?

[英]Passing char** into a function , doesn't change its values , or does it ?

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

如您所见,我对argv数组进行了两次测试,一次是在divide结束时,另一次是从divide返回之后。 在第一次检查中,我得到了从索引0argcargv所有值,但是在2nd检查中(从divide返回到main ),索引0使for循环崩溃。

所以很明显我做错了什么,知道吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM