声明类对象数组时崩溃

Crash while declaring Array of class objects

本文关键字:崩溃 数组 对象 声明      更新时间:2023-10-16

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

#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的访问冲突。

我不明白我在声明类对象的数组时做错了什么。

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

char *string;
cin>>string;

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

std::string;
cin >> string;

不能只写入不指向任何位置的指针。难怪你会有例外,你是在随机记忆中写作。在使用string之前进行分配。