c++ - 未处理的异常错误

标签 c++ visual-studio-2008 memory-management out-of-memory cplex

我调用 cplex 来解决 visual studio 中的优化问题。 我的问题就这么简单:

IloNumVarArray a(env,N,0,IloInfinity);
IloNumVarArray d(env,N,0,IloInfinity);

IloModel Model(env);    
//objective function
IloExpr obj(env);
for(IloInt n=0; n<N;n++)
  obj+=a[n]*c1[n]-d[n]*c2[n];
Model.add(IloMinimize(env,obj));
obj.end();

for(IloInt n=0;n<N;n++){
    Model.add(a[n]==0);
    Model.add(d[n]==0);
}
IloCplex cplex_p(Model);
cplex_p.setParam(IloCplex::EpGap,0.0001);
cplex_p.solve(); 
cplex_p.end();
Model.end();

但每次它都会给我这个错误信息:

Unhandled exception at 0x74eeb9bc in For-Calling-Cplex.exe: Microsoft C++ exception: IloWrongUsage at memory location 0x0027fbe4..

我做错了什么?

最佳答案

使用结束函数还为时过早。

obj.end();

因为您将它作为目标函数添加到模型中。除非您正在迭代创建模型并且内存不足,否则您不应该真正调用 .end() 函数。

如果你使用的是 msvc,你应该在 Debug模式下编译并且 set a breakpoint使调试器在实际抛出异常时停止。 接下来,您应该始终在较高级别捕获 IloException。在 try/catch block 中编写函数调用

try {
   buildModel():
} catch (const IloException& e)
{
   cerr << e;
   throw; // if you like
}

关于c++ - 未处理的异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307918/

相关文章:

visual-studio - Visual Studio 中的 "Error generating Win32 resource",Windows 7 x64

python - 使用来自串行端口的字符串数据来操作振镜扫描仪在更高速度下出错

c++ - 尝试创建临时对象时出现奇怪的编译器错误

c++ - 如何跳出内部 for 循环并返回到父 for 循环

visual-studio - 在 Visual Studio 2008 中继续 N 次

visual-studio-2008 - ffmpeg 最新的 Visual Studio 构建或与 (.a) 库链接

c++ - 为什么 C/C++ 有内存问题?

c++ - 为什么我的系统不释放缓冲区/缓存

java - 在 Linux 上测量进程的内存使用情况

c++ - Microsoft C++ 预定义宏