c ++库在mac os应用程序中返回不正确的指向对象的指针

时间:2016-03-07 23:19:07

标签: c++ objective-c macos cocoa

我正在编写Cocoa Mac OS应用程序(10.9.5 Xcode 6.2)。 这个应用程序使用c ++库。 我在mac os应用程序中混合了目标c ++和c ++。 所以我有这个电话链:

按钮单击(可可) - > Objective C ++对象 - > App C ++对象 - > C ++库

App C ++对象调用此

Client* client = ClientManager::getInstance()->getClient( url);

ClientManager和Client位于C ++库中,getClient始终返回初始化对象。

然后我调用客户端的一些功能

std::string encoding = "utf-8";
client->setEncoding( encoding);

此函数导致EXC_BAD_ACCESS代码为1,EXEC_I386_GPFLT。 库中此函数的代码是

string encoding;
void setEncoding(string newEncoding){ encoding = newEncoding;};

我检查过客户端的析构函数没有被调用且对象有效,但由于某种原因,MacOS C ++代码中的客户端>编码地址不正确。

我有这个地址:

C ++库:

Client ptr: 0x102811c00
 &client->encoding 0x102811d70

MacOS C ++应用程序:

 Client ptr 0x102811c00
 &client->encoding 0x102811d60

出于某种原因,客户端>编码在MacOS C ++和库中具有不同的0x10地址。

那么,问题是这是如何发生的以及如何解决这个问题?

0 个答案:

没有答案