当我尝试push_back任何元素时,它会给我提示错误“Project.exe中0.x00D644AB处未处理的异常:0xC000005:访问冲突写入位置0xCCCCCCC”。我试过寻找解决方案,但似乎找不到与我有关的解决方案。谢谢吨。访问冲突写入位置0xCCCCCCC?
SDAL(){
T* list = new T(50);
size1=50;
numberOfElements=0;
}
void push_back(const T& element) {
numberOfElements++;
if(numberOfElements>=size1-1){
expandArray();
}
list[numberOfElements-1]=element;
}
错误指向 “列表[numberOfElements-1] =元素;”当我调试它。
完整的代码是在这里:
template <typename T>
class SDAL {
private:
int size1;
int numberOfElements;
T* list;
public:
SDAL(){
T* list = new T[50];
size1=50;
numberOfElements=0;
}
SDAL(int x){
T* list = new T[x];
size1=x;
numberOfElements=0;
}
void expandArray(){
int tmpSize = size1;
size1=(int)((double)size1*1.5);
T* tmp = new T[size1];
for(int x=0; x<tmpSize; x++){
tmp[x]=list[x];
}
list=tmp;
}
void push_back(const T& element) {
numberOfElements++;
if(numberOfElements>=size1-1){
expandArray();
}
list[numberOfElements-1]=element;
}
“std :: vector”的完美用例。 – chris 2014-09-21 20:56:13
当访问冲突异常发生时,您可以调试并查看导致异常的指令。你可以调试你的程序吗? – Dialecticus 2014-09-21 20:57:37
你为什么决定省略大部分代码?你可以很容易地显示出一个完整的程序。为什么'size1-1'? – 2014-09-21 20:59:26