CORBA::ORB_init exception



我将ACE/TAO作为一个组件添加到一个用C和c++编写的大型项目中。我从服务器收到一个。ior文件,在调用CORBA::ORB_init(argc, argv)

时使用。ior文件我构造了自己的argc和argv,如下所示

int argc = 2;
char *argv[2] = { 0 };
argv[0] = "-k";
argv[1] = "D:\IOR\test.ior";
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);

当我调用ORB_init时,我得到一个"调试断言失败",它指向C:Program Files (x86)Windows Kits10Source10.0.17763.0ucrtheapdebug_heap.cpp line: 908

_ASSERTE(is_block_type_valid(header->_block_use));

CORBA::ORB_init在代码的很早就被调用了,所以不会有很多事情出错。我错过了什么明显的东西吗?

  • 您得到了debug_heap中的断言所指示的堆损坏
    • 当您在调试器中运行它时,您应该看到(Call Stack)断言触发的地方,可能使您能够查明问题。

话虽如此,ORB_init(argc, argv)应该获得C命令行参数并解析它们。这意味着argcargv应该遵守这些参数的规则:

argc一个整数,包含后面的参数计数argv。参数argc总是大于或等于1。

argv一个以空结尾的字符串数组,表示命令行由程序用户输入的参数。按惯例,argv[0]是用来调用程序的命令。argv[1]是第一个命令行参数。命令行的最后一个参数是argv[argc - 1],且argv[argc]总是NULL

试题:

int argc = 3;
char *argv[4];
argv[0] = "program";
argv[1] = "-k";
argv[2] = "D:\IOR\test.ior";
argv[3] = nullptr;

相关内容

  • 没有找到相关文章

最新更新