我在使用Visual C ++ 2008 Express Edition破坏我的程序时遇到了这个奇怪的错误:
'Ex2.exe': Loaded 'D:\studyMA\c++\visual studio\Ex2\Ex2\Debug\Ex2.exe', Symbols loaded.
'Ex2.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'
'Ex2.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'
'Ex2.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcp90d.dll'
'Ex2.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcr90d.dll'
First-chance exception at 0x1049615e in Ex2.exe: 0xC0000005:
Access violation reading location 0x333ee91c.
Unhandled exception at 0x1049615e in Ex2.exe: 0xC0000005:
Access violation reading location 0x333ee91c.
The program '[948] Ex2.exe: Native' has exited with code 0 (0x0).
类product
如下所示:
using namespace std;
class product
{
public:
string Product_code;
string Product_Name;
string Product_Category;
string Product_Vendor;
string Product_Discription;
string Product_Group;
void input();
void clear_product_cell();
};
我还有一个类(包含在bomba.h中),其中包含:
product ProductList[100];
我在bomba.cpp中编写代码,要求用户输入:
char ch;
cout << "Please Select your option: ";
cin >> ch;
switch(ch)
{
case '1'://Add a product
{
ProductList[0].input();
:
:
:
product.cpp看起来像这样:
product::input()
do{
cout << "Please enter product code: ";
getline(cin,Product_code);
if (Product_code.empty())
cout << "You Must Enter A Code!!!";
} while(Product_code.empty());
cout << endl;
在控制台中,我得到:
请选择您的选择:1 请输入产品代码:
...当我输入一个数字并在数字后输入CR键时程序崩溃,我得到上面引用的错误。
答案 0 :(得分:2)
没有任何信息可以继续(“Product_code是类产品中的成员变量”不是很有帮助),我猜想当你使用.empty()访问它时,Product_code为null,这会导致访问违反。 (我猜是基于'0xC0000005'错误代码,但这只是一个猜测。)
答案 1 :(得分:0)
0xC0000005或访问冲突表示您正在尝试访问不属于您的进程的内存。这通常意味着您没有分配内存。
不幸的是,您提供的代码太少,无法说出出错的地方,但我猜测Product_code是未初始化的。
答案 2 :(得分:0)
在cin >> Product_code;
之后Product_code是什么样的?可能是Product_code.empty()
正在调用一个不存在的函数,因为它是null