问答题X 纠错
Base::Base(char*)构造函数中,new分配的空间比所需的少一个字节,strcpy会导致溢出。
Base::copyName()函数中,返回的char*指向局部变量newname,局部变量会在函数返回时释放,导致返回值无效。
Base::print(Base)采用传值的方式调用,会引发一个Base的复制构造函数,而Base没有定义复制构造函数,则编译器给出一个缺省的,这个缺省的复制构造函数会导致两个Base对象的成员变量name指向同一块内存;这样其中一个对象析构时,这块共用的内存将被释放,导致另一个对象的name指向一个无效的地址。
你可能喜欢
问答题
字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?
类ClassB从ClassA派生,那么ClassA *a = new ClassB(„); 试问该表达是否合法?为什么?
如果ClassA中定义并实现虚函数int func(void),ClassB中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况又如何?为什么?
问答题
会输出123吗?123创建在堆上还是栈上呢?123的空间是什么时候释放的?
问答题
问答题
Consider the following code:
问答题