บอกว่าฉันมีโครงสร้างนี้:
typedef struct List_object list;
struct List_object {
char* name;
struct stat stats;
};
ในหลัก:
list** listObjects = malloc(sizeof(list*) * n);
for(int i = 0; i < n; i++) {
listObjects[i] = malloc(sizeof(list));
listObjects[i]->name = malloc(sizeof(char) * 124);
}
ถ้าอย่างนั้นฉันก็มีฟังก์ชั่นที่ตั้งค่าไว้:
void setListObjects(char* name, struct stat stats);
ฉันสงสัยว่าสมาชิกข้อมูล struct stat stats ในแต่ละออบเจ็กต์ของอาร์เรย์ listObjects จะอยู่ในฮีปด้วยหรือไม่
หรือจะเป็นเพียง listObjects และสมาชิกข้อมูล ชื่อ เนื่องจากทั้งสองได้รับการจัดสรรด้วย malloc ไม่ใช่ สถิติ
list** listObjects = malloc(sizeof(list) * n);
คุณสร้างบางสิ่งที่เป็นตัวชี้ให้กับlist
และกำหนดให้กับตัวชี้ให้กับตัวชี้ไปที่list
ขนาดไม่ตรงกัน คุณหมายถึงlist** listObjects = malloc(sizeof(list*) * n);
ใช่ไหม? - person Yunnosch   schedule 28.08.2020