是否可以重载 new 运算符以在 C++ 中分配类似二维数组的内容?

Is it possible to overload new operator for allocating something like 2d array in C++?

是否可以在 C++ 中重载全局 new 和全局 delete 运算符以分配和释放给定的 "height" 和 "width" 的二维内存块?

Is it possible to overload new operator for allocating something like 2d array in C++?

是的。

but can I get some code example?

示例:

std::unique_ptr<int[][10]> arr {new int[n][10]};

with given "height" and "width"?

仅当内部维度是编译时间常量时。只有外部维度可能是动态的。

动态一维平面数组和多维平面数组之间的转换很容易。

不幸的是,全局 new 运算符只有一个参数,因此您不能同时为它提供 "height" 和 "width"。而且,全局 new/delete 运算符不仅会被您编写的代码使用,还会被您使用的库使用,例如 std::string、std::vector。因此,进行这样的更改可能会导致严重的问题。