我在嵌入式 C++ 项目中工作,我计划在其中尽可能多地静态分配内存。因此,我正在编写一组函数来覆盖所有类和全局 new/delete 的 new/delete。
这是一个幼稚的实现:
class MyClass
{
int x;
float y;
double z;
static MyClass m_preAllocatedObjects[100]; //Solution 1
static char m_preAllocatedMemory[100 * sizeof(MyClass)]; //Solution 2
static char* getPreAllocatedMemory() // Solution 3
{
static char localStaticMemory[100 * sizeof(MyClass)];
return localStaticMemory;
}
static void* operator new(size_t s){
void* p; /*fill p from the pre-allocated memory or object*/;
return p;
}
};
解决方案 1:它仅适用于具有默认构造函数的对象。
解决方案2:编译错误use of undefined type 'MyClass'
;这就是我要问的。
解决方案 3:此解决方案工作正常。
问题是:
为什么我可以创建 MyClass 的静态成员,而我无法获取 sizeof(MyClass)?