GMa*_*ckG 64

第一个分配一个10个字符的数组.第二个分配一个初始化为10的char.

要么:

第一个应该替换std::vector<char>,第二个应该放入智能指针.


eq-*_*eq- 14

new char[10];
Run Code Online (Sandbox Code Playgroud)

动态分配char [10](char数组,长度为10),具有不确定的值,而

new char(10);
Run Code Online (Sandbox Code Playgroud)

再次,动态分配一个char,整数值为10.


Squ*_*ama 10

char *a = new char[10];
...
delete [] a;
Run Code Online (Sandbox Code Playgroud)

以上动态分配和释放10个可用于存储字符的连续内存插槽.

char *a = new char(10);
...
delete a;
Run Code Online (Sandbox Code Playgroud)

上面动态分配和释放一个用整数值初始化的内存槽10,相当于char值'\n'.


std::vector<T>如果您没有先了解指针,请不要使用.了解内存分配和指针的工作方式将使您成为更好的程序员.

  • 这对现有答案有何影响?而你的下半部分纯属意见,实际上在现代C++社区中非常不愉快.最好把人们交给黑盒子,*然后*告诉他们它是如何工作的以及为什么我们使用它们.无论如何,手动内存管理是不好的C++,为什么要开始教人们糟糕的C++? (3认同)
  • 你对如何教人的观点也是一种观点.我们会让他决定.另外,提到删除很重要. (2认同)