我正在尝试理解下面的代码。
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class A
{
public :
void Test();
};
void A::Test()
{
ShowMessage("Hello");
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
A *x;
x->Test();
}
当我调用Test方法时,我期待EAccessViolation错误。
没有x分配工作怎么办?
答案 0 :(得分:4)
没有x分配工作怎么办?
理论上,发布的代码是未定义行为的原因。
实际上,它有效,因为A::Test()
不依赖于任何成员数据。不保证在每个平台上都能正常工作。