相关疑难解决方法(0)

new,delete,malloc&free

我在接受采访时问过这个问题:

在C++中,

  1. 如果我们分配内存malloc并使用它delete来释放分配的内存怎么办?
  2. 如果我们使用new并使用它来释放内存free怎么办?

如果在代码中使用上述内容,我们将面临哪些问题?

我的回答是没有区别.这样说我是对的吗?

c++ malloc free memory-management new-operator

13
推荐指数
1
解决办法
4962
查看次数

如果通过重载`new []`分配给`malloc`来分配`free`内存是否安全?

我的问题不是重复吗?`new`分配的`free()`内存是否安全?.

我正在为POD写一个玩具垃圾收集器,我正在定义我自己的定制operator new/new[]operator delete/delete[].代码如下:

#include <iostream>
#include <map>

std::map<void*, std::size_t> memory; // globally allocated memory map
struct collect_t {} collect; // tag for placement new

void* operator new(std::size_t size, const collect_t&)
{
    void* addr = malloc(size);
    memory[addr] = size;
    return addr;
}

void* operator new[](std::size_t size, const collect_t&) 
{
    return operator new(size, collect);
}

void operator delete(void *p, const collect_t&) noexcept
{
    memory.erase(p); // should call ::operator delete, no recursion
    free(p);
}

void operator …
Run Code Online (Sandbox Code Playgroud)

c++ memory memory-management c++11

10
推荐指数
1
解决办法
206
查看次数

标签 统计

c++ ×2

memory-management ×2

c++11 ×1

free ×1

malloc ×1

memory ×1

new-operator ×1