Dar*_*bik 2 c++ new-operator undefined-behavior language-lawyer
我想覆盖运算符new以获得此签名:
void* operator new(size_t bytes, MemoryManager* man);
Run Code Online (Sandbox Code Playgroud)
这堂课MemoryManager看起来像这样:
struct MemoryManager
{
virtual void* Allocate(size_t bytes) = 0;
virtual void Deallocate(void* ptr) = 0;
};
Run Code Online (Sandbox Code Playgroud)
现在我想做的是让重载new函数分配比要求更多的内存.然后在最后几个字节中它将存储一个指向该MemoryManager对象的指针,以便它知道在我的自定义delete运算符中使用什么函数.所以看起来像这样分配:
__________
| | _
|__________| |
| | |
|__________| |
| | | <---- Bytes requested for object
|__________| |
| | |
|__________| |
| | _|
|__________|
| | _
|__________| | <---- Pointer to MemoryManager
| | _|
|__________|
Run Code Online (Sandbox Code Playgroud)
现在我真正的问题是:这样做会导致未定义的行为吗?一些可能有问题的事情:
new返回的字节数多于请求数,可能未定义| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |