相关疑难解决方法(0)

delete []"如何"知道操作数数组的大小?

Foo* set = new Foo[100];
// ...
delete [] set;
Run Code Online (Sandbox Code Playgroud)

您没有将数组的边界传递给delete[].但是这些信息存储在哪里?它是标准化的吗?

c++

235
推荐指数
5
解决办法
3万
查看次数

C++,Free-Store vs Heap

new/delete据说动态分配在免费商店中进行,
malloc/free操作则使用.

在实践中,我想知道是否存在实际差异.
编译器是否区分了这两个术语?(免费商店,不new/malloc)

c++ memory-management

112
推荐指数
4
解决办法
5万
查看次数

你如何在C++中'realloc'?

我怎么能用reallocC++?它似乎在语言中缺失 - 有new,delete但不是resize!

我需要它,因为当我的程序读取更多数据时,我需要重新分配缓冲区来保存它.我不认为delete旧指针和new新的更大的指针是正确的选择.

c++ realloc new-operator delete-operator

78
推荐指数
3
解决办法
7万
查看次数

是否可以将C++智能指针与C的malloc一起使用?

我的一些代码仍然使用malloc而不是new.原因是因为我害怕使用,new因为它抛出异常,而不是返回NULL,我可以很容易地检查.结束语每次调用newtry{}catch(){}也看起来并不好.而在使用时malloc我可以做到if (!new_mem) { /* handle error */ }.

所以我有一个问题.我可以同时使用智能指针malloc吗?

就像是:

SmartPointer<Type> smarty = malloc(sizeof(Type));
Run Code Online (Sandbox Code Playgroud)

像这样的东西.

这可能吗?

谢谢,Boda Cydo.

c++ malloc smart-pointers new-operator

23
推荐指数
2
解决办法
1万
查看次数

在C++中的"new"运算符之后使用"realloc"是否安全?

据我所知,没有为没有确切的替代reallocCC++喜欢newmalloc.但是,当我使用realloc in C++来改变new运算符分配的内存时,它工作正常.

像我在下面的代码中那样使用这两个(newrealloc)是否安全,或者它可能导致一些问题?

#include <iostream>
#include <cstdlib>

int main()
{
    int size = 5;
    int * arr = new int[size]{ 1,3,5,7,9 };

    for (int i = 0; i < size; i++)
        std::cout << *(arr + i) << (i < size - 1 ? ' ' : '\n');

    size++;
    arr = (int*)realloc(arr, size * sizeof(int));

    *(arr + size - 1) = 11; …
Run Code Online (Sandbox Code Playgroud)

c++ realloc

-2
推荐指数
1
解决办法
405
查看次数