以下问题怎样怎么引起的。如何解决。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 ();}
--------------midi_head.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()
{
cout<<time<<" "<<status<<" "<<id<<endl;
}; private:
int time;
char *status;
int id;};

解决方案 »

  1.   

    Set(int time,char *status ,int id)private:
    int time;
    char *status;
    int id;
    这里面的变量名不要一致
    time status id 最好在构造里面初始化
      

  2.   

    status 在 Set方法中没有将值传出来,两个变量同名了。作用域仅限于Set函数内部,所以在Show的时候使用了没有初始化的指针 status 出错。
      

  3.   

    public:
    char *status;
    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;
    int id;
      

  4.   

    谢谢wubin999(吴斌) (herosword(南)
      

  5.   

    void Set(int time,char *status ,int id)
    {
    this->time=time;
    this->status=status;
    this->id=id;
    };