C++动态数组大小定义

Joc*_*hen 5 c++

我习惯了java和php,现在我需要编写一些c ++代码.我很难创建一个动态大小的BYTE阵列.怎么做到这一点?

int byteSize = shm.getMemorySize();
BYTE byte[44]; // replace 44 by byteSize
Run Code Online (Sandbox Code Playgroud)

Woj*_*wka 8

您应该使用std::vector除非您有非常具体的理由使用数组.通常,在C++中使用其他语言的数组的类似上下文中,默认选择应该是std::vector.


gal*_*p1n 5

切勿使用裸露的指针,否则它会打开以防止错误和内存泄漏,请使用以下替代方法:

int len = something;
std::vector<char> buffer(len,0);
Run Code Online (Sandbox Code Playgroud)

或c ++ 11智能指针

std::unique_ptr<char[]> buffer{ new char[len] };
Run Code Online (Sandbox Code Playgroud)

或带有make_unique的c ++ 14

auto buffen = std::make_unique<char[]>(len);
Run Code Online (Sandbox Code Playgroud)