我有一个CPP程序(让我们称它为程序1),它调用另一个CPP程序(程序2)。此Program2是在调试模式下构建的。这就是:
int main(int argc, char** argv) {
///Function body#
eerot[0] = atof(argv[1]);
eerot[1] = atof(argv[2]);
eerot[2] = atof(argv[3]);
eetrans[0] = atof(argv[4]); //Exception thrown here due to memory clash
///Continue
}
上面的代码片段描述了我用program2编写的主程序的结构。Program2没有执行错误,也没有抛出任何异常。现在我想从program1调用program2的这个主函数,但我被双指针变量卡住了。因为argv变量是双指针,即使我能够创建一个字符串,双重引用它,并将它作为参数传递给program2,我也会得到异常。没有编译错误。所有适当的头部都被完美地定义了。
我不能编辑program2,因为它是由其他团队开发的,很难理解。我已经更改了程序2的main函数的名称(比如改为"calculate()"),并从program1的main调用它。我还适当地包含了目录和头文件,以使program2的所有函数和类在program1中可见。现在我唯一被卡住的就是双指针argv变量。我如何传递我必须通过命令提示符传递的参数,这些参数是通过另一个程序传递的?
请注意,我们在program2的命令提示符中传递的参数是double类型。我试着使用数组,但我总是收到抛出的异常。当你试图解决这个问题时,请告诉我你想到的任何事情。
发布于 2019-05-22 03:09:22
我认为问题出在main()声明中的三重指针。你的意思可能是:
int main(int argc, char** argv) {
或
int main(int argc, char* argv[]) {
发布于 2019-05-22 03:11:07
你想要char **argv ..。或char *argv[],而不是char **argv[]
上面这两个都是指向数组的指针。你得到的是一个指向二维数组的指针,所以你访问元素的方式最终会超过数组元素的数量。
https://stackoverflow.com/questions/56244903
复制相似问题