Объявление указателя на структуру в 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