gpt4 book ai didi

c++ - new char(size) 在 C++ 中是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:15 27 4
gpt4 key购买 nike

在通过 new(在 C++ 中)分配缓冲区时,我错误地写道:

int size = 1024 * 1024;
char *buf = new char(size);

而不是普通的语法

char *buf = new char[size];

然而,当使用这个 buf 变量时,代码确实被编译并导致了奇怪的崩溃。显然,似乎分配了一个八字节的缓冲区。

我想知道new char(size)的含义。

最佳答案

char *buf = new char(size);

它只分配 sizeof(char) 字节并用 size 初始化它——松散地等价于此:

char *__internal_buf = new char; //1 byte only

*__internal_buf = size; //or static_cast<char>(size);

char *buf = __internal_buf;

这两者的区别是一样的:

 char x(65);  //y is single element initialized to be 'A'. as 65 is 'A'
char y[65]; //y is an array of size 65

希望对您有所帮助。

关于c++ - new char(size) 在 C++ 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30251660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com