C ++配置数组

时间:2013-11-21 14:49:29

标签: c++ memory-management

我正在看另一个SO问题,而评分最高的答案是这样说的:

  

其他答案已经提到RAII,这是一个很好的答案。   但是,最佳建议是这样的:首先不要分配动态对象!   不要写

Foo * x = new Foo();
     

什么时候可以写

Foo x;
     

代替。

这对我来说似乎是个好听的建议。基于堆栈的东西已经具有良好且良好的自动生命周期管理。

我的问题是:如何将此声音建议应用于

之类的内容
char * buffer = new char[1024];
stream.read(buffer, 1024);
...do stuff...
delete[] buffer;

如果我愚蠢的话,请注意,但是如何在不使用new[]的情况下创建数组?

2 个答案:

答案 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);