gpt4 book ai didi

c++ - 使用指针算法释放内存

转载 作者:行者123 更新时间:2023-11-28 03:32:14 25 4
gpt4 key购买 nike

C++ 新手在这里。我正在尝试仅使用指针编写我自己的数组实现,但我遇到了我不知道如何克服的障碍。

我的构造函数抛出这个错误

array.cpp:40:35: error: invalid conversion from ‘int*’ to ‘int’ [-fpermissive]

当我的数组初始化时,我希望它为整数释放数组中的所有空间。

Array::Array(int theSize){
size = theSize;
int *arrayPointer = new int;
int index = 0;
while(theSize > index){
*(arrayPointer + index) = new int; //This is the trouble line.
++index;
}
}

我在 stackoverflow 做错了什么?

最佳答案

arrayPointer指向单个 int , 它不指向 int* 的数组,这一行需要:

*(arrayPointer + index) = new int;

但是 *(arrayPointer + index) 的类型是一个 int ,因此编译器错误。

分配int的数组:

int* arrayPointer = new int[size];

如果这是为了初始化一个成员变量,那么:

arrayPointer = new int[size];

否则arrayPointer对构造函数来说是本地的。由于该类现在有一个动态分配的成员,您需要同时实现复制构造函数和赋值运算符或防止复制(参见 What is The Rule of Three? )。记得delete[] arrayPointer在析构函数中。


只是提到 std::vector<int> ,即使这是一个学习练习。

关于c++ - 使用指针算法释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186809/

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