Tôi đang tìm kiếm một cái gì đó chú thích nhưCó tương đương với __attribute __ ((ns_returns_retained)) cho một con trỏ malloc'd không?
-(SomeStruct *) structFromInternals __attribute__((returns_malloced_ptr))
{
SomeStruct *ret = malloc(sizeof(SomeStruct));
//do stuff
return ret;
}
để làm dịu vang thú phân tích tĩnh. Liên kết thuộc tính khả thi duy nhất tôi có thể tìm thấy là for GCC, nhưng nó thậm chí không bao gồm ns_returns_retained
, mà là trong một phần mở rộng, tôi giả định.
EDIT:
như tại sao điều này là cần thiết, tôi có một kịch bản mà tôi không thể repro trong một trường hợp đơn giản, vì vậy nó có thể phải làm với ac lib trong một dự án Objective-C ... các ý chính là, tôi nhận được một cảnh báo phân tích tĩnh rằng malloc trong createStruct đang bị rò rỉ:
typedef struct{
void * data;
size_t len;
}MyStruct;
void destroyStruct(MyStruct * s)
{
if (s && s->data) {
free(s->data);
}
if (s) {
free(s);
}
}
MyStruct * createStructNoCopy(size_t len, void * data)
{
MyStruct * retStruct = malloc(sizeof(MyStruct));
retStruct->len = len;
retStruct->data = data;
return retStruct;
}
MyStruct * createStruct(size_t len, void * data)
{
char * tmpData = malloc(len);
memcpy(tmpData, data, len);
return createStructNoCopy(len, tmpData);
}
MyStruct * copyStruct(MyStruct * s)
{
return createStruct(s->len, s->data);
}
Tại sao bạn cần điều này? –
Chỉ cần viết nó trong tài liệu. –