C++ 在RAM中分配空间,然后在此创建和销毁不同的数据结构

C++ 在RAM中分配空间,然后在此创建和销毁不同的数据结构,c++,data-structures,C++,Data Structures,我想知道是否有一种有效的方法来重新利用RAM中的空间 假设我的函数在专用空间中创建了四个不同的数组和10个变量。然后调用另一个函数,将分配的空间归零,并创建自己的结构,这是不同的。我有什么选择?有直接的方法吗?直接的方法是使用C。这就是合适的地方。在C++中,不要。 在C++中,初始化函数与称为构造函数的数据类型进行同步。分配是用new完成的,或者更好的是,new是由一个容器(比如向量或智能指针)完成的 例如: 总结 你看到的自动化是C++ C++的基础。这是一种更好的语言,它有一些抽象概念,这

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


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

直接的方法是使用C。这就是合适的地方。在C++中,不要。

在C++中,初始化函数与称为构造函数的数据类型进行同步。分配是用new完成的,或者更好的是,new是由一个容器(比如向量或智能指针)完成的

例如:

总结 <>你看到的自动化是C++ C++的基础。这是一种更好的语言,它有一些抽象概念,这样你就不必做所有的工作,也不必修改它


客观地说,与C语言相比。当然,它可能会被错误地使用,但所有语言都是如此。

直接的方法是使用C语言。这正是合适的地方。在C++中,不要。

在C++中,初始化函数与称为构造函数的数据类型进行同步。分配是用new完成的,或者更好的是,new是由一个容器(比如向量或智能指针)完成的

例如:

总结 <>你看到的自动化是C++ C++的基础。这是一种更好的语言,它有一些抽象概念,这样你就不必做所有的工作,也不必修改它


客观地说,与C相比。当然,它可能会被错误地使用,但所有语言都是如此。

至少在Linux、Windows、MacOSX等普通操作系统上,您不需要进行分配。。。在物理上,通过在C中分配函数,例如Maloc,C++中的运算符new,来分配使用。也请阅读以了解有关操作系统的更多信息

在Linux上,阅读并尝试cat/proc/self/maps、cat/proc/$$/maps和cat/proc/$$/smap,以了解有关虚拟地址空间的更多信息。增加虚拟地址空间的主要系统调用是

<>如果你想在C++中重用现有的和有效的地址来使用新的或另一种数据结构,你将使用布局new运算符。阅读更多关于。在重用某个对象使用的空间之前,可能需要调用某个析构函数。还可以阅读,以及

了解编程习惯用法和使用方法


不要羞于使用指针。在C++中,大多数时候都喜欢。了解有关的更多信息。

您至少在Linux、Windows、MacOSX等普通操作系统上没有分配。。。在物理上,通过在C中分配函数,例如Maloc,C++中的运算符new,来分配使用。也请阅读以了解有关操作系统的更多信息

在Linux上,阅读并尝试cat/proc/self/maps、cat/proc/$$/maps和cat/proc/$$/smap,以了解有关虚拟地址空间的更多信息。增加虚拟地址空间的主要系统调用是

<>如果你想在C++中重用现有的和有效的地址来使用新的或另一种数据结构,你将使用布局new运算符。阅读更多关于。在重用某个对象使用的空间之前,可能需要调用某个析构函数。还可以阅读,以及

了解编程习惯用法和使用方法


不要羞于使用指针。在C++中,大多数时候都喜欢。了解有关的更多信息。

您的意思是编写自己的内存分配器吗?或者你的问题到底是关于什么的?我发现很不清楚你在问什么我的意思是如何创建“extern”变量,它可以存在于范围之外并由代码终止。我可以用C++结构来做吗?或者我需要写一些充满指针的东西吗?为什么不使用一个联合?C++没有工会吗?目的是什么?标准机制本地/全局变量和mallocetc有什么问题。@Ferofixer:请编辑您的问题,不要评论它您的意思是编写您自己的内存分配器吗?或者你的问题到底是关于什么的?我发现很不清楚你在问什么我的意思是如何创建“extern”变量,它可以存在于范围之外并由代码终止。我可以用C++结构来做吗?或者我需要写一些充满指针的东西吗?为什么不使用一个联合?C++没有工会吗?目的是什么?标准机制本地/全局变量和mallocetc有什么问题。@FeroFixxer:请编辑您的问题,不要评论。您可以始终使用placement new并调用析构函数directly@doron当然不过,这可能是最不简单的方法:您始终可以使用placement new并调用析构函数directly@doron当然但这可能是最不直截了当的方式:
#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