如何动态分配全局 int*?

约翰儿子

我正在尝试在 C++ 中执行合并排序代码,并且为了避免大量内存使用,我想将辅助向量声明为全局变量。您可能知道,使用全局变量策略,使用的空间是O(1),而使用另一个,它是O(N logN)但是有一个小问题,我不知道将用于测试我的代码的向量的大小,因此我需要动态分配该全局变量。

我已经尝试做这样的事情:

这是来自 .h 档案:

void mymergesort_recursive(std::vector<int> &v, SortStats &stats, int i = 0, 
                           int f = 0, bool nouveau = true);
int *aux = nullptr;

这是来自 .cpp 档案:

void mymergesort_recursive(std::vector<int> &v, SortStats &stats, int i, 
                           int f, bool nouveau) {
    if (nouveau) {
        stats.recursive_calls = 1;
        f = int(v.size());
        // Allocates the variable aux according with the vector size. This makes a lot of memory economy.

        aux = new int[f];
    } else {
        ...
    }
    ...
}

其实我也试过这个:

aux = (int *)malloc(f * sizeof(int));
aux = static cast <int*>(malloc(f * sizeof(int)));

以及其他所有导致相同错误的尝试和错误可能性:-(

`aux'的多重定义

我在这里的这个论坛中寻找了一些其他问题,但是尽管有很多类似的问题,但我无法完全解决这个问题。

我想已经清楚地解释了这个问题,但如果有什么不明白的地方,请询问。

米尔科

错误是您在标题上声明了一个变量。

在标题上你应该放

extern int* aux;

然后在一些 .cpp 中你应该输入:

int* aux= nullptr;

无论如何,你应该认真考虑而不是int* aux使用std::vector<int> aux;.

  • 它将为您保留元素的数量
  • 空时它几乎不会使用任何空间。
  • 它会根据需要增长。
  • 您可以reserve在使用它之前进行记忆以优化它。
  • 你不需要打电话delete/free

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在结构数组中初始化和动态分配int指针成员?

来自分类Dev

动态分配char数组和int数组的结构

来自分类Dev

在结构内部动态分配一个int数组

来自分类Dev

为char和double或int动态分配的内存需要相同的amout?

来自分类Dev

为什么动态分配的int数组在scanf,C语言中使用&?

来自分类Dev

释放需要返回但不能在c的main中释放的动态分配的int

来自分类Dev

MPI_Send/Recv 发送动态分配的 int 数组失败

来自分类Dev

如何在 C++ 中的全局字符数组中动态分配类的实例?

来自分类Dev

动态分配不适用于全局整数指针

来自分类Dev

如何动态分配valdr规则?

来自分类Dev

如何扩展动态分配的数组

来自分类Dev

如何动态分配参数值

来自分类Dev

如何制作动态分配的结构数组?

来自分类Dev

如何释放动态分配的向量?

来自分类Dev

我如何动态分配属性

来自分类Dev

动态分配算法

来自分类Dev

动态分配字段

来自分类Dev

动态分配网关

来自分类Dev

动态分配

来自分类Dev

如何动态分配熊猫分配中的列名

来自分类Dev

如何动态计算动态分配的内存的大小

来自分类Dev

如何动态分配max-tag值?

来自分类Dev

如何使用任意`&mut`引用成员和动态分配?

来自分类Dev

如何在AngularJS中动态分配过滤器

来自分类Dev

如何避免动态分配的小部件中的内存泄漏

来自分类Dev

如何在C ++中访问动态分配的矩阵?

来自分类Dev

如何在Django集合中动态分配别名?

来自分类Dev

如何正确管理动态分配对象的内存?

来自分类Dev

如何使用动态分配的任意维数组?