Fer*_*llo 4 c++ pointers data-structures
我编写了下面这段代码,我相信如果我试图访问我甚至没有分配内存的结构的成员,它会崩溃.但我很惊讶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;
}
Run Code Online (Sandbox Code Playgroud)
操作系统:Windows 7
编译器:MinGW GCC 4.6.1
Fre*_*Foo 11
C++没有自动分配内存; 指针保存一个任意值,恰好是程序内存空间中的有效地址,因此您没有得到段错误.您的程序显示未定义的行为,下次运行时可能无法正常工作.
未定义的行为不能保证崩溃,这就是为什么它被称为undefined.
| 归档时间: |
|
| 查看次数: |
3778 次 |
| 最近记录: |