blg*_*101 5 c c++ memory-management objective-c ios
与ac/c ++库集成时IOS中的奇怪行为.
在AppDelegate我打电话
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{
[[ABCService sharedInstance] abcInitialize];
});
Run Code Online (Sandbox Code Playgroud)
abcInitialize在c ++库中定义
struct abc *top;
top = calloc(TYPE_SERV,size_of(struct abc));
top->us = server_alloc (...certain_params...);
Run Code Online (Sandbox Code Playgroud)
在服务器内部我分配结构struct1和struct2 然后在初始化函数我尝试访问
top->us = calloc(TYPE_US, size_of(struct us));
if(top->us->struct1) //do something
Run Code Online (Sandbox Code Playgroud)
我注意到我的struct1始终为null
当我调试时,我可以看到结构被分配正确并且值被适当地设置,但在从函数返回之前,内存被自动释放.这完全令人困惑和烦人.任何人都可以帮我理解发生了什么吗?
我也试过关掉ARC,但仍然没有变化
Run Code Online (Sandbox Code Playgroud)top->us = calloc(TYPE_US, size_of(struct us)); if(top->us->struct1) //do something我注意到我的struct1始终为null
如果那是你真正的代码,那么是的,struct1总是为空.calloc分配内存并将其初始化为零.因此,所有成员都top->us将为零,并且由于struct1是成员top->us,因此它将为零,即NULL.
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |