声明类对象数组时崩溃

时间:2014-03-24 01:01:17

标签: c++ arrays

我想为我的实用程序声明一个类对象数组。我尝试声明如下,但我得到一个例外。无法理解我做错了什么。这是代码部分。

#include<iostream>
#include<conio.h>

using namespace std;

struct charFreqPair{
public: charFreqPair();
        charFreqPair(char,int);
        ~charFreqPair(){}
        char ch;
        int freq;
};

charFreqPair::charFreqPair(){

}

charFreqPair::charFreqPair(char c , int f){
    ch = c;
    freq = f;
}


int main(int argc , char **argv){
    char *string;
    cout<<"Enter String"<<endl;
    cin>>string;
    charFreqPair array[128] ;
    getch();
}

如果我通过评论运行上述代码:     charFreqPair数组[128]; 一切正常。但是,如果我按原样运行上面的代码,它会抛出以下异常:

  

String1.exe中0x00d31556处的第一次机会异常:0xC0000005:访问冲突写入位置0x00d320fd。

我无法理解在声明类对象数组时我做错了什么。

2 个答案:

答案 0 :(得分:2)

错误不是由数组引起的,而是由于您使用cin将输入保存到未初始化的指针中这一事实:

char *string;
cin>>string;

char *string未初始化,因此取消引用它会导致异常。您应该使用std::string

std::string;
cin >> string;

答案 1 :(得分:1)

你不能只写一个没有指向任何地方的指针。难怪你得到例外,你正在写随机记忆。 在使用之前分配您的string