2 young111111234 Young111111234 于 2016.03.19 23:48 提问

C++运行调试问题。。。。。


图片说明
#include "stdafx.h"
#include
using namespace std;

class Data_rec
{
public:
Data_rec()
{
name = NULL;
}
~Data_rec()
{
delete[]name;
}
void insert_name(char* pname)
{
delete[]name;
name = new char[strlen(pname) + 1];
strcpy_s(name,255, pname);
}
void print()
{
cout << "Name:" << name << endl;
}
private:
char* name;
};
////////////////////////////////////////////////////////////////////////

class Student :virtual public Data_rec
{
public:
Student() :Data_rec(){ id = NULL;}
~Student(){ delete[]id; }
void insert_id(char* pid)
{
delete[]id;
id = new char[strlen(pid) + 1];
strcpy_s(id,25, pid);
}
void print()
{
Data_rec::print();
cout << "ID:" << endl;
}
private:
char* id;
};
///////////////////////////////////////////////////////////////////////////////////////

class Teacher :virtual public Data_rec
{
public:
Teacher() :Data_rec(){ sal = 0; }
void insert_sal(float psal){ sal = psal; }
void print()
{
Data_rec::print();
cout << "Sal:" << sal << endl;
}
private:
float sal;

};
///////////////////////////////////////////

class Postgrad :public Student
{
public:
Postgrad() :Student(){ dn = NULL; }
~Postgrad()
{
delete[]dn;
}
void insert_dn(char* p)
{
delete[]dn;
dn = new char[strlen(dn) + 1];
strcpy_s(dn,25, p);
}
void print()
{
Student::print();
cout << "Dept name:" << dn << endl;
}
private:
char* dn;
};
/////////////////////////////////////////////

class Tpost :public Teacher, public Postgrad
{
public:
Tpost(): Teacher(), Postgrad(){}
void print()
{
Teacher::print();
Postgrad::print();
}

};

int main()
{
Teacher t;
Tpost tp;
t.insert_name("Li Min");
t.insert_sal(5000);
tp.insert_name("zhang jun");
tp.insert_sal(1500);
tp.insert_id("08901");
tp.insert_dn("computer");
t.print();
tp.print();
return 0;
}
今天学习C++时遇到的,编译是成功的,但运行时会出现异常。这是课本上的程序。请各位大神帮忙看看是什么问题。谢谢啦

2个回答

devmiao
devmiao   Ds   Rxr 2016.03.19 23:52

课本上的程序也不对,应该是指针的问题,点中断,仔细检查出错的行

Young111111234
Young111111234 不知道怎么检查,无从下手,请进一步的指导
2 年多之前 回复
YXTS122
YXTS122   2016.03.20 06:17

把id=new char[strlen(pid)+1];上面这句delete []id;去掉,就没事了,要先new才能delete

Young111111234
Young111111234 还是不行,出现的问题跟昨天的一样,不知怎么解决了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
windows下的DPM经验
原文:http://blog.sciencenet.cn/blog-261330-663182.html Discriminatively Trained Deformable Part Models的官网:http://www.cs.brown.edu/~pff/latent/ 目前做目标检测最好的一个算法。 搞不懂为什么外国人老喜欢在linux下编代码,也许是因为版权的问
VS2005调试问题解决方案集锦
VS2005调试问题解决方案集锦VS2005调试问题解决方案集锦VS2005调试问题解决方案集锦VS2005调试问题解决方案集锦
C语言调试的文章(三篇)
关于一些c语言的调试问题,以及排版问题的文章
VS2005(c#)项目调试问题解决方案集锦
VS2005(c#)项目调试问题解决方案集锦VS2005(c#)项目调试问题解决方案集锦VS2005(c#)项目调试问题解决方案集锦VS2005(c#)项目调试问题解决方案集锦
串口调试程序串口调试程序串口调试程序串口调试程序
串口调试程序,解决串口调试问题 串口调试程序,解决串口调试问题 串口调试程序,解决串口调试问题 串口调试程序,解决串口调试问题 串口调试程序,解决串口调试问题 串口调试程序,解决串口调试问题
eclipse调试问题
eclipse调试问题
nrf51822开发问题汇总【持续添加】
下载程序时出错 --> * JLink Info: Could not measure total IR len. TDO is constant high. 解决办法:option -> debug -> settings -> debug -> port那里选SW,此时右边应该不是空白(ARM CoreSight ...)
.NET调试问题 拒绝了对对象 'sp_sdidebug'
.NET调试问题 拒绝了对对象 'sp_sdidebug' .NET调试问题 拒绝了对对象 'sp_sdidebug'
VS2005(c#)项目调试问题解决方案集锦(五)
VS2005(c#)项目调试问题解决方案集锦(五)
ReactNative调试
1. 缺少模块根目录, 输入npm install, 会自动安装所需模块. 具体会调用package.json内容, 下载dependencies依赖模块.{ "name": "ChunyuYuEr", "version": "0.0.1", "private": true, "scripts": { "start": "react-native start" },