我在一次采访中遇到了这个问题。我回答了
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
中可能会更受欢迎。
或者也许他根本不希望你使用动态分配?