私はインタビューでこの質問に出くわしました。私は答えました
char *p = new char[100];
インタビュアーによると、これは間違っています。
何が正しい方法なのか、インタビュアーが正確に何を期待していたのか、誰か教えてもらえますか?
私はインタビューでこの質問に出くわしました。私は答えました
char *p = new char[100];
インタビュアーによると、これは間違っています。
何が正しい方法なのか、インタビュアーが正確に何を期待していたのか、誰か教えてもらえますか?
あなたの答えは正しいです。ただし、手動のメモリ管理が必要なため、エラーが発生しやすくなります。より 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);
頭の中に何があるかを知らなければchar
、C++ で 1 に等しいサイズが保証されていることを知らない可能性があり ( §5.3.3/1 )、次のようなものを期待していました。
void* mem = malloc(100);
それでも、おそらく C++ のvector
方が好ましいでしょう。
それとも、ダイナミック アロケーションをまったく使用してほしくないのでしょうか?