gpt4 book ai didi

c++ - 为什么这段代码不在 C++ 中分配内存?

转载 作者:行者123 更新时间:2023-11-30 01:08:05 25 4
gpt4 key购买 nike

这是书类

//book.h
#include<iostream>
class Book
{
public:
int _isbn;
};

这是 BookList 类

//book_list.h
#include"book.h"
class BookList
{
pubblic:
BookList(int limit);
Book** _list;
};

book_list.cpp

#include<iostream>
#include"book.h"
#include"book_list.h"
BookList::BookList(int limit)
{
_list = new Book*[limit]
}

主要.cpp

#include<iostream>
#include"book.h"
#include"book_list.h"
int main()
{
BookList myList(5);
myList._list[1]->_isbn = 4; // here I get the crash
}

为什么我不能更改 _list[i] 中的某些内容?

最佳答案

您为指向 Book 的指针分配内存.您需要为 Book 分配内存指针指向的 s。

_list = new Book*[limit]
for (int i = 0; i < limit; ++i) {
_list[i] = new Book;
}

这修复了代码中的错误,但您确定要这样做吗?如果您需要 Book 的简单动态数组小号,std::vector<Book>是要走的路。

显然,作为一项规则,每个 new必须附有 delete每个 new[]必须附有 delete[] - 为了不发生内存泄漏。

// this goes into the destructor
for (int i = 0; i < limit; ++i) {
delete _list[i];
}
delete[] _list;

关于c++ - 为什么这段代码不在 C++ 中分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43256266/

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