我正在编写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地址。
那么,问题是这是如何发生的以及如何解决这个问题?