新的char(大小)在C 中是什么意思
What does new char(size) mean in C++?
通过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
&MDASH初始化它。宽松等效于此:
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
希望会有所帮助。
这意味着您为单个char
分配内存,并使用整数size
初始化它。就您而言,size
不适合char
。如果恰好签署了char
,则将整数size
转换为char
,但结果已定义。如果char
为unsigned
,则int
围绕char
表示的最大值(通常为255)。
也存在类似的语法:
int x(10); // initialize x with 10
或
char c('a'); // initializes c with 'a'
null,但这是一个更好的例子:
#include <iostream>
using namespace std;
int main() {
int size = 'A';
char *buf = new char(size);
cout << *buf;
}
打印出
null的原因:1024*1024 = 0x100000。最后一个字节进入字符。char为无效。实际上,我在一段时间以来见过的效率最低的零终止字符串。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思