我有五个文件:类T,类M(抽象类),类MC(容器),类AC(创建一个添加到MC容器中的特定对象)和我的主文件。 我有这些函数来添加一个对象(对于这种情况下,AC),并检索您在AC(标题)中找到的数据成员。处理未初始化的指针数组的错误C++
该程序编译,看来我可以创建和添加一个AC对象。然而,当我尝试使用我的getTitle功能,程序崩溃,我得到以下错误
“未处理的异常在0x00b938e6在TLAB 5.exe:0000005:访问 冲突读取位置0xcccccce4。”
从我抬头看,这意味着我有一个坏/未初始化的指针。在我的程序的唯一指针是:
M *C[MCSize] //Found in MC.h
为MC的构造是这样的:
MC::MC()
{
cout << "Enter Name: ";
getline(cin, CName);
cout << "Enter size of collection: ";
cin >> CurrentMCSize;
if (CurrentMCSize < 0 || CurrentMCSize > MCSize)
{
cout << "Size is invalid. Please re-enter: ";
cin >> CurrentMCSize;
}; //MCSize is defined in the header of MC.
调用时输入的标题的功能是在这里:
void MC::ListMTitles()
{
for (int i = 0; i < CurrentMCSize; i++)
{
cout << i << ". " << Collection[i]->GetTitle();
}
};
//GetTitle is defined in M.cpp
在发生DMA的情况下://MC.cpp
void MC::AddM()
{
int Selection;
if(CurrentMCSize < MCSize)
{
DisplayMTypeMenu();
Selection = GetMTypeSelection();
switch(Selection)
{
case 1: Collection[CurrentMCSize] = new AC;
break;
// Other case statements
}
if (0 == Collection[CurrentMCSize])
{
cout << "Error: Memory Allocation Failed.";
exit(1);
}
else
{
cout << "New M Type added!" << endl << endl;
}
CurrentMCSize++;
}
我没有正确初始化我的指针吗?我的添加功能实际上是对我说谎而没有添加任何东西?我环顾四周,但是我看到的大部分答案都涉及到使用矢量,为了这个项目,我认为我不允许使用这个项目,因为教授没有理解它们。
所以它是C++而不是C,对不对? – 2012-12-19 18:33:44
事故发生在哪里? –
你从0列出'CurrentMCSize',我相信你还没有创建这些。 – imreal