之前由于本人的粗心,声明了一个类的指针对象后,赋值为NULL,然后忘记分配内存给它就直接使用了。
class A
{
void test()
{
printf(“test A”);
}
};
void main()
{
A *a=NULL;
a->test();
}
本人使用时就相似上面的才操作,test中没有对A的成员变量的访问,这样不会出现编译错误,调试也没问题。
本人的实际的程序中调用的成员函数,它没有使用A的成员变量,但是有局部变量
本人的问题就是这种情况下,时间久了会导致程序死掉吗?本人没有在test中访问成员变量哦。
哪位高手帮本人解答一下,谢谢
class A
{
void test()
{
printf(“test A”);
}
};
void main()
{
A *a=NULL;
a->test();
}
本人使用时就相似上面的才操作,test中没有对A的成员变量的访问,这样不会出现编译错误,调试也没问题。
本人的实际的程序中调用的成员函数,它没有使用A的成员变量,但是有局部变量
本人的问题就是这种情况下,时间久了会导致程序死掉吗?本人没有在test中访问成员变量哦。
哪位高手帮本人解答一下,谢谢
解决方案:5分
你的说法有一定道理,建议你可以看下编译后的汇编代码,原因是像这样的调用,release优化后压根不会去执行函数调用开销,直接把test里的功能在当前函数展开了。
DEBUG确实是没用到ecx指针
DEBUG确实是没用到ecx指针
解决方案:30分
你调用的成员函数,都不会出问题,即使this为0也不会,原因是不需要用到this来调用它,根据标准来说,这个应该是属于未定义行为的。