gpt4 book ai didi

c++ - 将 malloc 转换为 new

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:05 24 4
gpt4 key购买 nike

我正在使用 g++ 进行编译。这是有效的,但我想转换为 C++ 运算符 new() 和 delete(),因为这被认为是最佳实践。

  int *scratch = (int *)malloc(size * sizeof(int));
free(scratch);

使用 new 和 delete 的等价物是什么?这是我的猜测。

 int **scratch = new int*[size];
delete[] scratch;

这是一个指针数组。

双星是引用。它是指向指针的指针。

最佳答案

你可能想做:

std::vector<int> scratch(size);

但郑重声明,您尝试的应该是:

int* scratch = new int[size];
delete[] scratch;

请注意,如果 size在编译时已知,您也只需执行以下操作:

int scratch[size];

编辑

对于指向 int 的指针数组,所需的语法是:

int** scratch = new int*[size];
delete[] scratch;

请注意,数组中的指针不是指分配的内存,您必须分配每个指针 int在能够使用它们之前。

也就是说,您可以:

int a = 3;
int b = 5;

scratch[0] = &a;
scratch[1] = &b;
scratch[2] = &a;
scratch[3] = new int(5); // Well, I don't see why anyone would like to do that but if you do, don't forget to also call delete on the pointer when you are done with it.

无论如何,除非你有一些特殊的限制,否则大多数C++做事方式大概还是一个std::vector<int*>因为在一些间接级别之后处理指针的指针变得有点难以维护。

关于c++ - 将 malloc 转换为 new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922665/

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