是否可以重载 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。因此,进行这样的更改可能会导致严重的问题。
是否可以在 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。因此,进行这样的更改可能会导致严重的问题。