[英]Passing char** into a function , doesn't change its values , or does it ?
我将动态分配的变量传递给一个函数,从该函数返回后,当我在代码上运行输入时,这些输入中的一些使程序崩溃。
如您所见,我对argv
数组进行了两次测试,一次是在divide
结束时,另一次是从divide
返回之后。 在第一次检查中,我得到了从索引0
到argc
的argv
所有值,但是在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.