cnbatch
2024-03-21 16:19:43 +08:00
等等,为什么要用 new 直接创建呢?最后还得手动 delete 。
不如用 std::vector 或者 std::make_unique<char[]>(数据长度)
这两个好多了
std::vector 已经有人发了,那么 make_unique 的用法是:
size_t data_size{2701131776};
std::unique_ptr<char[]> raw_data_ptr = std::make_unique<char[]>(data_size);
char* raw_data = raw_data_ptr.get();
在我的 Windows 11 + VS2022 测了下,很成功,没任何报错。
另外呢,直接用 malloc 、new 创建的空间,按照 C 语言留下来的“惯例”,是需要手动初始化的。
通常会用 memset 初始化为零,用 std::fill 也可以。
如果改用 std::vector 或者 std::make_unique ,就可以跳过这一步,它们都会自动初始化。