写入访问冲突异常
Write access violation exception
我正在制作这个程序,您必须在 main 中使用 switch 语句来修改堆栈,并且我对 push 语句有一点问题。输入要放在堆栈上的值后,程序暂停并显示此错误:Exception thrown: write access violation.
**this** was 0x1AD0112. occurred
该错误指向我的 cpp 文件,用于 push(( 下的方法。
#include "Stack.h"
void Stack::push(int val) {
top = top + 1;
ary[top] = val; //this is where the exception is thrown.
//ary[top++] = val;
}
int Stack::pop() {
top = top - 1;
return ary[top + 1];
//return ary[top--];
}
int Stack::peek() const {
return ary[top];
}
bool Stack::isFull() const {
if (top == SIZE - 1)
return true;
else
return false;
//return top == SIZE - 1;
}
bool Stack::isEmpty() const {
if (top == -1)
return true;
else
return false;
//return top == -1;
}
Stack::Stack() {
top = -1;
}
然后我在 main 中调用该方法,将值放在堆栈的顶部。
#include "Stack.h"
#include <iostream>
using namespace std;
int main() {
Stack s;
int x;
int y;
char c;
cin >> c;
do {
switch (c) {
case 'P': //push statement
cin >> x;
s.push(x);
break;
//case 'O':
//y = s.pop();
//cout << y << endl;
//break;
case 'K':
y = s.peek();
cout << y << endl;
break;
case 'Q':
return 0;
break;
}
} while (c != 'Q');
return 0;
}
这也是头文件
#ifndef STACK_H
#define STACK_H
class Stack {
private:
int top;
static const int SIZE = 10;
int ary[SIZE];
public:
int pop();
void push(int);
int peek() const;
bool isEmpty() const;
bool isFull() const;
Stack();
};
#endif
输入第一个推送值后发生错误。任何帮助不胜感激!谢谢
由于唯一可以更改开关大小写语句中使用的"c"值的地方是在"do while 循环"之前,因此您最终会陷入循环中所做的选择。如果您选择"P",则稍后键入的所有值都是要推送到堆栈的值(因为您被 c = "P"( 将 cin>> c 行移动到"switch"语句之前的"do"部分中。这将使程序的行为更像您计划的那样。
相关文章:
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 写入访问冲突异常
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 堆栈上的 C++ 访问冲突写入异常
- 引发异常:写访问冲突. temp 为 nullptr
- 在C++中删除双向链表的头节点后出现访问冲突异常
- C++ 引发异常:访问冲突写入
- 未处理的异常..访问冲突写入位置
- 存储类对象的C++模板链表-未处理的异常访问冲突读取位置
- 读取位置/使用结构的矢量时发生未处理的异常访问冲突
- 未处理的异常:访问冲突读取位置
- 未捕获异常.访问冲突读取位置
- 未处理的异常 - 访问冲突读取位置0x00000000
- 使用函数指针C++异常:访问冲突执行位置0x00000000
- 赋值变量时c++未处理异常访问冲突
- 在c++中使用JNI时,c0000005异常(访问冲突)
- c++ std::cin未处理异常:访问冲突写入位置
- 使用 int 变量的 C++ 异常访问冲突
- 未处理的异常/访问冲突,只要我在变量上使用 OutputDebugStringW()
- 异常:访问冲突