Unhandled exception in music.exe 0xc0000005:Access Violation 问题,求助高手。(200分)

W

winnn

Unregistered / Unconfirmed
GUEST, unregistred user!
以下问题怎样怎么引起的。如何解决。
Unhandled exception in music.exe 0xc0000005:Access Violation(F5运行)
如果编译则出现"0x00404330"指令引用的"0xcccccccc"内存。该内存不能为"read"........
程序如下
---------------------
midimain.cpp
#include "midi_head.h"
void main( void)
{
Midi a;
a.Set (3,"dd",33);
a.show ();
}
--------------
#include<iostream.h>
#include<stdio.h>
class Midi
{
public:
Midi(){};
void Set(int time,char *status ,int id)
{
time=time;
status=status;
id=id;
};
void show()
{
cout<<time<<" "<<status<<" "<<id<<endl;
};
private:
int time;
char *status;
int id;

};
 
Midi类缺少构造函数
 
你试试这个,在vc.net下通过:
//midi.h
#pragma once
#include<iostream>
using namespace std;
class Midi
{
public:
Midi(int Time=0,char *Status=NULL,int Id=0):
time(Time),status(Status),id(Id)
{ }
~Midi(void){ };

void Set(int Time,char *Status ,int Id)
{
time=Time;
status=Status;
id=Id;
};
void show()
{
cout<<time<<" "<<status<<" "<<id<<endl;
};
private:
int time;
char *status;
int id;
};
//midi.cpp
#include "midi.h"
#using <mscorlib.dll>

void main( void)
{
Midi a;
a.Set (3,"dd",33);
a.show ();
}
 
#include "stdafx.h"
#include<iostream.h>
#include<stdio.h>
class Midi
{
public:
Midi(){};
void Set(int time,char *status ,int id)
{
time=time;
status=status;
id=id;
};
void show()
{
status = " 错误在于原来status没有被赋值!!!/n 这个程序有问题,a.Set函数的传递的3个值,根本没有传到这个show函数!!";
// 去掉上面这句话,不给status赋值,程序就出错。
cout<<time<<" "<<status<<" "<<id<<endl;
};
private:
int time;
char *status;
int id;

};
void main( void)
{
Midi a;
a.Set (3,"dd",33);
a.show ();
}
VC 6.0编译通过。
 
嗯,是啊,在set函数里,类成员变量status的作用域被函数实参status覆盖了
那个status的赋值不起作用,只是把自己傅给自己
 
顶部