У меня есть пример кода, который хранит переменные в разных местах памяти: глобальная, динамическая куча, стек и неопределенная.
Я знаю, что все методы хранятся в стеке, вся динамически выделенная память находится в куче, а все переменные, которые не находятся в блоке {}, хранятся в глобальной области.
Я думаю, чтопеременные в структуре получают также указатель на динамическую кучу размером структуры.
Итак, у меня есть несколько вопросов о коде
номер строки (11), где хранится & (a1)?
где хранится a1?
номер строки (12) где хранится a1.arr?
номер строки (21) где хранится a2-> arr?
номер строки (22) & (a2-> size) сохранен?
Это мой пример кода
#define N 4
typedef struct a
{
int* arr;
int size;
}A;
int arr1[] = {1,2,3,4};
int main()
{
A a1;
a1.arr = arr1;
a1.size = sizeof(arr1)/sizeof(arr1[0]);
A* a2;
a2 = malloc(sizeof(A));
int arr2[N];
for(int i=0;i<N; ++i)
{
arr2[i] = i*N;
}
a2->arr=arr2;
a2->size=N;
return 0;
}