سلام به دوستان.
من یک struct رو با typedef تعریف کردم:
حالا در برنامه جاهایی من malloc میگرم و پس از یکسری عملیات می خواهم اطلاعات رو به struct منتقل کنم. در توضیح بیشتر یک تابع دارم که خروجی اون ساختار test هست. یک متغیر از test میگیرم و کارهام با اون انجام می دم. در حین این کار ها یک حافظه به data متغیرم اختصاص می دم. حال موقعی که این متغیر رو return می کنم نمی توانم حافظه را free کنم. چرا که اطلاعاتم می پره.کد:typedef struct{
char* data;
char cond;
}test;
این free رو کجا باید بنویسم؟
فرض متد من این طوری باشه:
جایی در برنامه هم برای فراخوانی اینطوری نوشتم:کد:test mymethod(){
test mys;
mys.data=(char*)malloc(mysize*sizeof(char));
.
.
.
mys.cond=1;
return mys;
}
آیا free را باید در فراخوانی بنویسم؟کد:test mydata=mymethod();
اصلا این روش درست هست؟کد:free(mydata.data);