Объявление указателя на структуру в C ++ автоматически выделяет память для его членов. Я ошибаюсь?

Я написал следующий фрагмент кода, и я полагал, что он потерпит крах, если я попытаюсь получить доступ к членам структуры, для которой я даже не выделил память. Но я был очень удивлен, что C ++ автоматически выделил память для структуры. Это нормальное поведение? Для сравнения, если вы объявите указатель на объект, а затем попытаетесь получить доступ к любым членам, не создавая объект с оператором «new», программа будет аварийно завершена. Мне просто интересно, почему это работает, когда я верю, что это не должно.

Это моя программа:

#include <stdio.h>

struct Produto
{
    int codigo;
    float preco;
};

int main()
{
    struct Produto* sabonete;
    sabonete->codigo = 654321;
    sabonete->preco = 0.85;

    printf( "Codigo = %i\n", sabonete->codigo );
    printf( "Preco = R$ %.2f\n", sabonete->preco );

    return 0;
}

ОС: Windows 7
Компилятор: MinGW GCC 4.6.1

Ответы на вопрос(5)

Ваш ответ на вопрос