Выделение памяти при обычном объявлении - C (СИ)
Формулировка задачи:
Пусть имеется некий код
У меня вопрос, как компилятор выделяет память всем переменным(кроме *ar, там маллок)? И на каком этапе происходит инициализация? То есть я допуская что может быть так, что сначала создаётся переменная f типа int, а присвоение происходит позже, на некой другой итерации, когда присвоение идет уже для всех.
int main(){
int a, b, c, d, e, f , g , e;
int f = 15;
int z = 51;
double doub = 23.1;
int *ar = malloc(600);
}Решение задачи: «Выделение памяти при обычном объявлении»
textual
Листинг программы
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
int main()
{
int a, b, c, d, e, g;
int f = 15;
int z = 51;
double doub = 23.1;
int* ar = (int*)malloc(600);
printf("%d %d %d %d %d %d %d %d %f %p\n",a, b, c, d, e, g, f, z, doub, ar);
return 0;
}
Объяснение кода листинга программы
- Объявление переменных: int a, b, c, d, e, g;
- Объявление переменных: int f = 15; int z = 51;
- Объявление переменной: double doub = 23.1;
- Выделение памяти под массив указателей на int с помощью malloc: int ar = (int)malloc(600);
- Вывод на экран значений переменных и адреса выделенной памяти: printf(
%d %d %d %d %d %d %d %d %f %p\n,a, b, c, d, e, g, f, z, doub, ar); - Освобождение памяти: free(ar);
- Возврат 0, что означает успешный конец работы программы.