new/delete据说动态分配在免费商店中进行,
而malloc/free操作则使用堆.
在实践中,我想知道是否存在实际差异.
编译器是否区分了这两个术语?(免费商店和堆,不new/malloc)
我正在研究一个C++库,其中一个函数返回一个(新分配的)指向一个双精度数组的指针.API声明调用者有责任释放内存.
但是,C++库曾经在C中实现,并且有问题的函数会分配内存malloc().它还假定调用者将释放该内存free().
我可以通过电话安全地替换malloc()呼叫new吗?现有的客户端代码(free()如果我这样做会使用中断吗?到目前为止我能找到的是官方文档free(),其中说明了这一点
如果ptr没有指向使用[malloc,calloc或realloc]分配的内存块,则会导致未定义的行为.
但我相信这是在C++与自己的分配运算符一起出现之前编写的.
new/delete 关键字是使用免费商店
malloc/free 关键字是使用堆
我看到写在某处new使用malloc.怎么会这样?它们不用于内存段?
第二,我看到写在某个地方free后我们不能使用new或delete之后使用malloc.但如果new使用malloc为什么free不起作用?
我们free在newect 之后使用的地方'.这是错误还是未定义的行为?
谢谢