这是 C 和 C++ 的理论问题。
我有一个 4x4 矩阵类型,它的定义非常简单:
typedef float Matrix44[16];
我也有许多以 aMatrix44
作为参数的方法,例如:
bool matrixIsIdentity(Matrix44 m);
我还有一个自定义的内存分配方案,在堆上预先分配了大面积的内存,然后我手动管理该预取内存上的分配。因此,我已经用我自己的实现替换/重载malloc
/ 。new
问题是,自定义malloc
和new
本质上都返回一个指针,而不是一个对象。
通常,我会简单地执行以下操作:
// Method 1
1] Matrix44 mat = { ... };
2] bool res = matrixIsIdentity(mat);
但是,第 1 行分配mat
在堆栈上,而不是我希望的自定义内存区域。另一种选择是:
// Method 2
1] Matrix44 *mmat = myMalloc(...);
1a] Matrix44 *nmat = new ...
2] bool res = matrixIsIdentity(*mat);
这里的问题是我将不得不在我的代码中乱扔解引用运算符。现在一种选择是重写所有要采用的方法Matrix44*
,但是,由于这是理论上的,我想假设这不是一种选择。
因此我的问题变成了:有没有办法在 C 和/或 C++ 中声明一个自动变量Method 1 Line 1
,但是否遵循备用分配方案(如Method 2 Line 1
)?
(我很欣赏这可能涉及与编译器相关的讨论,但我没有为此添加标签)