我正在看另一个SO问题,而评分最高的答案是这样说的:
其他答案已经提到RAII,这是一个很好的答案。 但是,最佳建议是这样的:首先不要分配动态对象! 不要写
Foo * x = new Foo();什么时候可以写
Foo x;代替。
这对我来说似乎是个好听的建议。基于堆栈的东西已经具有良好且良好的自动生命周期管理。
我的问题是:如何将此声音建议应用于
之类的内容char * buffer = new char[1024];
stream.read(buffer, 1024);
...do stuff...
delete[] buffer;
如果我愚蠢的话,请注意,但是如何在不使用new[]
的情况下创建数组?
答案 0 :(得分:5)
char buffer[1024];
stream.read(buffer, 1024 /* or sizeof(buffer) */);
答案 1 :(得分:4)
如果数组是固定大小的(例如问题中的1024),只需:
char buffer[1024];
或者,在C ++ 11中,首选:
std::array<char, 1024> buffer;
如果arrary大小仅在运行时已知(或者如果它太大而不能舒适地放在堆栈上),那么:
std::vector<char> buffer(1024);