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 回答