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

问题描述

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(name255 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(id25 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(dn25 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++时遇到的,编译是成功的,但运行时会出现异常。这是课本上的程序。请各位大神帮忙看看是什么问题。谢谢啦

解决方案

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

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

时间: 2024-08-03 17:24:00

c++-C++运行调试问题。。。。。的相关文章

VC6下DLL,VS2010下用,运行调试异常。

问题描述 VC6下DLL,VS2010下用,运行调试异常. VC6下开发的DLL,在VC6下开发应用程序可以使用前述DLL,工程转换到VS2010之后也可以使用,但是在VS2010下直接使用前述DLL,编译可以通过,但是运行调试时报内存访问异常.请问大侠,该如何解决? 解决方案 两个可能性,一个是本来程序就有内存的问题,但是vc2010对内存的检查更严格,所以问题得以暴露. 另一个可能是单字节双字节的问题,或者一些结构体长度定义不同,你内存分配硬编码了长度,而不是用sizeof求值,导致内存分配

.net运行调试可以操作数据库,使用本地ip访问或者是局域网ip访问就不行了!

问题描述 .net运行调试可以操作数据库,使用本地ip访问或者是局域网ip访问就不行了! 调试的时候正常是否说明数据库连接代码没问题?是不是我的sqlseerver网络配置不对 还是哪里我还没有配置的 解决方案 出了什么问题?是不是防火墙没关 解决方案二: 贴图看看什么问题

部署 nginx+wordpress 运行调试环境教程

以前玩wordpress的时候,还是用apache+wordpress,而后来虽然自己成了nginx粉,却也只是用来做nginx+python的开发,没有把nginx+php配合起来.这次趁这要搭建wordpress的调试环境,所以重新梳理了一遍. PS:网上很多盛传的版本,基本都不太准,我这里算是亲身试验了,给大家个准的 PS2:这次就在windows下来搞了,其实在linux也是一样 OK,我们正式开始 一. php安装部署     到php windows下载页面下载zip包,而不是安装包

调试-cocos2d-x在visual studio中运行cpp-tests时为什么总是无法运行成功?

问题描述 cocos2d-x在visual studio中运行cpp-tests时为什么总是无法运行成功? 如题,在运行调试的时候会弹出有些项目已经过期的窗口,继续运行的话生成失败 解决方案 项目过期是因为你更改了源代码,但是没有成功编译. 没有成功编译的问题是你没有配置好环境(假设代码没问题的话) 参考:http://blog.csdn.net/shuideyidi/article/details/38435165 配置你的环境. 解决方案二: 一般是代码文件等修改时间有变化,也就是文件变化了

Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行

  如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!好了,废话不多说,就开始吧,本文将描述基础环境的搭建,以及将应用在android环境中调试.发布.运行,iOS部分将在后面的文章中专门讲解. 一.搭建环境 1. 安装 VS2015. 2. 安装 Xamarin.我安装的是目前的最新版本:Xamarin.VisualStudio_4.2.0.703.msi. 3. 安装JD

asp.net项目运行的权限问题

asp.net|问题|项目 最近开发中遇到一个问题,费了两天时间,终于解决了.总结一下,以供大家参考. 我从邮箱下载一个asp.net项目到本地机器,然后建立虚拟目录,用VS打开,运行调试,出现错误.然后,打开ie,输入虚拟目录,出现没有权限访问文件夹的错误. 上网查资料,说是aspnet这个帐户,没有项目文件夹的执行权限.而我的项目文件夹的友键菜单中,又没有安全这一项(我的系统分区为NTFS,很奇怪),因此用这种办法,还是没发解决问题. 最后,我在C盘建一个DotNet文件夹,把项目移进来,问

符号文件——Windows应用程序调试必备

一.何谓符号文件? 符号文件(Symbol Files)是一个数据信息文件,它包含 了应用程序二进制文件(比如:EXE.DLL等)调试信息,专门用来作调试之用,最终生成 的可执行文件在运行时并不需要这个符号文件,但你的程序中所有的变量信息都记录在这 个文件中.所以调试应用程序时,这个文件是非常重要的.用 Visual C++ 和 WinDbg 调 试程序时都要用到这个文件. 在 Windows 系统中,符号文件以 .pdb 为扩展名, 比如:每个 Windows 操作系统下有一个 GDI32.d

第十二章-异常处理与程序调试(三)(1)

12.4.3 断点的使用 12.4.3.1 设置断点 设置断点首先在Code Editor中选定你想设置断点的代码行,而后进行如下的任一种操作: ● 单击选定代码行左边的空白 ● 按F5 ● 选择Code Editor加速菜单的Toggle BreakPoint项 ● 选择Run|Add Breadpoint打开断点编辑对话框(Edit BreakPoint Dialog Box),而后选择New去确认一个新的断点设置或选择Modify去对一个存在的断点进行修改 ● 从BreakPoint Li

Visual Studio集成开发环境无法启动调试

问题: 在利用Visual Studio 2005或2008集成开发工具进行开发的过程,对已开发完成的程序按"F5"试图进行编译运行,这时VS开发工具突然弹出"无法启动调试 绑定句柄无效"的错误信息,起初还以为VS开发工具安装太久了,随着"年龄"的增大出毛病了:还是先按自己的经验鼓捣了半天再按"F5"还是报同样的错误,无语没办法了(由于太懒了,觉得重装太麻烦),算了还是请教下"google大师"吧,果然不出