Ben clang statik analiz hayvanlar yatıştırmayaMallaştırılmış bir işaretçi için __attribute __ ((ns_returns_retained)) bir eşdeğer var mı?
-(SomeStruct *) structFromInternals __attribute__((returns_malloced_ptr))
{
SomeStruct *ret = malloc(sizeof(SomeStruct));
//do stuff
return ret;
}
gibi bir ek açıklama şey arıyorum. Bulabildiğim tek geçerli öznitelikler bağlantısı for GCC'dur, ancak bir uzantıdaki ns_returns_retained
'u içermez, varsayalım.
DÜZENLEME:
bu gereklidir neden olarak, bunun bir Objective-C projesinde AC lib ile yapmak zorunda kalabilirsiniz bu yüzden basit bir durumda üreme olmayan bir senaryo var ... yüreğin CREATESTRUCT malloc sızdırılmış olması statik analiz uyarısı alıyorum, geçerli:
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);
}
Neden buna ihtiyacınız var? –
Sadece belgeye yazın. –