x) {
int* allocated_int = (int* ) malloc(sizeof(int));
*allocated_int = 777;
*x = *allocated_int;
}
int main() {
int x;
init_variable_on_heap(&x);
printf("variable is %i\n", x);
return 0;
}
Если закрыть глаза на утечку и странность подхода, то с технической точки зрения можно ли сказать, что моя переменная лежит в динамически выделенной памяти, а не в стек памяти?
allocated_int — эта да.
Точно, я же купирую туда значение, поэтому переменная x так и осталась в стеке. Верно?
Да, переменная x изменила только значение.
Спасибо, это мне и нужно было
Для начала скажи что ты пытаешься сделатт
как посчитал?
что посчитал?
Выделил правильно. Не освободил неправильно
С технической точки зрения так сказать нельзя, ибо то, для чего переменная используются, не требует динамического объекта, а сразу после этого использовантя все ссылки на эту динамическую переменную теряются. Так что переменной уже не существует сразу же после выхода из этой функции.
Обсуждают сегодня