gpt4 book ai didi

c++ - 类中的动态内存(分配内存和访问元素)

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

我有一个简单的类aClass:

class aClass
{
public:
aClass(int size)
{
condition = new bool[size];
}
~aClass()
{
delete condition;
}
bool getCondition(int i) const
{
return condition[i];
}

void setCondition(bool* condition, int i)
{
*(this->condition + i) = *condition;
}
private:
bool* condition;
};

其实我定义了一个 bool 指针并使用构造函数分配内存。

#include <iostream>
#include "aClass.h"
using namespace std;

int main()
{
aClass tempVar(10);
bool *pC;

for (int i = 0; i < 10; i++)
{
*pC = 0;
tempVar.setCondition(pC, i);
}
for (int i = 0; i < 10; i++)
{
cout << tempVar.getCondition(i);
}
return 0;
}

我不知道这段代码有什么问题。

我使用 gcc 版本 4.6.3 来编译代码。

最佳答案

虽然您从未初始化指针,但您正在尝试取消引用 pC。可能 pC 的类型应该是 bool,而不是 bool*,同时 *pC = 0 应该是pC = 0setCondition 应该采用 bool 而不是 bool*

delete虽然它应该是delete[],看这里为什么:delete vs delete[]

如果 aClass 的实例被复制到某处,您的代码将尝试删除分配的内存两次。参见 Rule of three .

您应该使用 std::vector 而不是手动分配的数组。

关于c++ - 类中的动态内存(分配内存和访问元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20918297/

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