Mathlink内存使用积累

bbt*_*trb 2 wolfram-mathematica mathlink

我用来MathLinkC++应用程序发送和接收独立的mma表达式作为字符串.

std::string expression[N];
// ...
for(int i = 0; i < N; ++i) {
    MLPutFunction(l, "EnterTextPacket", 1);
    MLPutString(l, expression[i].c_str());
    MLEndPacket(l);

    // Check Packet ...

    const char* result;
    MLGetString(l, &result);

    // process result ...

    MLDisownString(l, result);
}
Run Code Online (Sandbox Code Playgroud)

我希望MLDisownString释放已用过的内存,除非它没有.

有任何想法吗?

Dr.*_*ius 6

好.发布此作为答案,因为我相信您使用版本5或更低版本的几率非常低:

`As of Version 6.0, MLDisownString() has been superseded by MLReleaseString()`
Run Code Online (Sandbox Code Playgroud)

检查它在这里