где находятся переменная в стеке или в куче?

ребята , не пинайте строго. вопрос дилетанта. Если я не пользую маллок, а просто тупо таким образом инициализирую jjj, тогда где хранятся a и b для jjj в куче или в стеке ?

typedef struct {
    int a;
    int b;
} myStruct;


int main(int argc, char* argv[])
{
    myStruct* jjj;
    jjj->a = 777;
    jjj->b = 111;
    return 0;
}

Ответы (2 шт):

Автор решения: gbg

Нигде. Потому что на данный момент, указатель jjj никак не инициализирован. Программа упадет на 2 строчке.

→ Ссылка
Автор решения: Harry

Формально - по адресу, хранящемуся в jjj. Но какой там адрес хранится - никто ничего не скажет, потому что это неинициализированная локальная переменная.

Так что адрес может быть каким угодно, только вот с огромной вероятностью - таким, куда писать/читать нельзя. Тогда ждет аварийный останов программы.

Вот так - совсем другое дело:

myStruct* jjj = new myStruct;
jjj->a = 777;
jjj->b = 111;
→ Ссылка