Hành vi lạ trong IOS khi tích hợp với thư viện c/C++.IOS xóa bộ nhớ được cấp phát trong thư viện gốc
Trong appdelegate tôi gọi
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^{
[[ABCService sharedInstance] abcInitialize];
});
abcInitialize được định nghĩa trong C++ thư viện
struct abc *top;
top = calloc(TYPE_SERV,size_of(struct abc));
top->us = server_alloc (...certain_params...);
bên trong máy chủ alloc tôi làm alloc của cấu trúc struct1 và struct2 Và sau đó trong Initialize chức năng i cố gắng truy cập
top->us = calloc(TYPE_US, size_of(struct us));
if(top->us->struct1) //do something
tôi nhận thấy rằng struct1 của tôi luôn luôn là null
Khi tôi sửa lỗi, tôi có thể thấy rằng, công trình được phân bổ tốt và giá trị này được thiết lập một cách thích hợp, nhưng trước khi trở về từ chức năng, bộ nhớ sẽ tự động deallocated. Điều này hoàn toàn khó hiểu và gây phiền nhiễu. Có ai giúp tôi hiểu chuyện gì đang diễn ra không?
tôi đã cố gắng bằng cách tắt ARC quá, vẫn không có sự thay đổi
Bạn cần hiển thị cách struct1 được phân bổ và cách nó được khai báo. – bbum
stuct1 đang được phân bổ là calloc (1, stuct1_size); – blganesh101
Tôi đoán bạn cần hiển thị abcInitialize: trông như thế nào. Bởi vì trong mã hiện tại của bạn, bạn không cấp phát bộ nhớ cho con trỏ 'top' nhưng gán thứ gì đó cho thành viên' us' (top-> us = ...). –