gpt4 book ai didi

c++ - 在RAM中分配空间,在这里创建和销毁不同的数据结构

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

我想知道是否有一种重新利用 RAM 空间的有效方法。

假设我的函数在专用空间中创建了四个不同的数组和 10 个变量。然后调用其他一些函数,将分配的空间归零并创建自己的结构,这是不同的。我有哪些选择?有直接的方法吗?

最佳答案

最直接的方法是使用 C。这就是它“合适”的地方。在 C++ 中,不要这样做。

在 C++ 中,初始化函数goes 数据类型(称为构造函数)。并且分配是通过 new 完成的,或者更好的是,new 是由容器(例如 vector 或智能指针)完成的。

例子:

Live On Coliru

#include <vector>
#include <iostream>

struct MyData {
int value;
std::string name;

MyData() : value(0), name("")
{ }

~MyData() {
if (!name.empty()) {
std::cout << "The element with name " << name << " is being destructed\n";
}
}
};

int main() {
std::vector<MyData> v(100); // allocates 100 MyData instances, all initialized to `0, ""`

v[5].value = 5;
v[5].name = "Five";

} // here, all of the vector is destructed and memory is correctly "de-allocated" (freed).

打印:

The element with name Five is being destructed

总结

您在上面看到的“自动化”使 C++ 成为 C++。这是一种更好的语言¹,具有抽象,因此您不必完成所有工作(并使其正确)。

¹ 客观上,与C相比。当然,它可能会被错误使用,但所有语言都一样。

关于c++ - 在RAM中分配空间,在这里创建和销毁不同的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46682089/

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