gpt4 book ai didi

c++ - 自定义静态分配器可能吗?/一种伪造它的方法?

转载 作者:太空狗 更新时间:2023-10-29 23:12:55 26 4
gpt4 key购买 nike

背景:出于硬件相关原因,我需要分配使用 DOS Protected Mode Interface 的内存为了与一些低级接口(interface)进行通信(例如 VESA BIOS Extensions )。

情况:所以我可以为动态分配的内存重载 newdelete 这很好,但我真的想为静态分配的内存重载分配器。我正在处理的项目是相当旧的库,因此需要相当数量的静态全局变量。

问题:有什么方法可以使这些变量的分配过程过载吗?如果没有,是否有一个模板可以动态分配这些不需要显式分配或删除并且几乎完全透明的变量?

最佳答案

遗憾的是,没有关键字来指定您希望使用的内存分配类型,也没有标准模板来强制进行堆分配。我能找到的最佳答案是只制作一个小的包装器类 a,它可以按照您的需要分配和删除内存,并为您提供对指针的访问权限。没什么特别的,但这是我的一些代码。

template<typename T>
class mem
{
public:
mem(void) { m_data = reinterpret_cast<T*>(dos::malloc(sizeof(T))); }
~mem(void) { dos::free(m_data); m_data = nullptr; }
T* operator ->(void) noexcept { return m_data; }
operator T*(void) noexcept { return m_data; }

private:
T* m_data;
};

关于c++ - 自定义静态分配器可能吗?/一种伪造它的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42813665/

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