1

私はインタビューでこの質問に出くわしました。私は答えました

char *p = new char[100]; 

インタビュアーによると、これは間違っています。

何が正しい方法なのか、インタビュアーが正確に何を期待していたのか、誰か教えてもらえますか?

4

2 に答える 2

4

あなたの答えは正しいです。ただし、手動のメモリ管理が必要なため、エラーが発生しやすくなります。より C++-y な方法は次のようになります。

std::vector<char> buffer(100);

または実際に、数値 100 がコンパイル時の定数である場合:

std::array<char, 100> buffer;
// or
char buffer[100];

最後に、低レベルのメモリ管理に本当に関心がある場合は、別の方法があります。

std::allocator<char> alloc;
char* buffer = alloc.allocate(100);
于 2013-10-23T11:53:04.737 に答える
1

頭の中に何があるかを知らなければchar、C++ で 1 に等しいサイズが保証されていることを知らない可能性があり ( §5.3.3/1 )、次のようなものを期待していました。

void* mem = malloc(100);

それでも、おそらく C++ のvector方が好ましいでしょう。

それとも、ダイナミック アロケーションをまったく使用してほしくないのでしょうか?

于 2013-10-23T11:53:43.007 に答える