gpt4 book ai didi

c++ - "Debug Assertion"数组、头文件和声明

转载 作者:太空宇宙 更新时间:2023-11-04 11:26:32 25 4
gpt4 key购买 nike

我制作了一个头文件,其中包含一个固定大小 (17) 的数组,但有些东西根本不正确,我找不到什么。

ScreenArray.h

    class ScreenArray
{
public:
ScreenArray();
~ScreenArray();
unsigned long getColour(int arrayPointer);
void setColour(int arrayPointer, unsigned long pixelColour);
private:
unsigned long pixelArray[17];
};

ScreenArray.cpp

#include "PixelScreenArray.h"

ScreenArray::ScreenArray()
{

}

ScreenArray::~ScreenArray()
{
delete[] pixelArray;
}

unsigned long ScreenArray::getColour(int arrayPointer)
{
return pixelArray[arrayPointer];
}

void ScreenArray::setColour(int arrayPointer, unsigned long pixelColour)
{
pixelArray[arrayPointer] = pixelColour;
}

源.cpp

...
ScreenArray sA;
sA.setPixel(0, 3242);
...

最佳答案

如果你没有用 new[] 分配数组,你不应该 delete[] 它,这是错误的:

class ScreenArray
{
public:
ScreenArray();
~ScreenArray() {
delete[] pixelArray; // Nope
}
private:
unsigned long pixelArray[17];
};

数组是类的成员,整个对象是否像你一样在栈上分配:

ScreenArray sA;
sA.setPixel(0, 3242);

或者使用 new ScreenArray(); 在堆上分配,您不能“只是删除对象的一部分”。

在您的特定情况下,您正在尝试释放堆栈内存和 that's UB

关于c++ - "Debug Assertion"数组、头文件和声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com