new[ 这里是什么变量类型 ],该如何处理
new[ 这里是什么变量类型 ]
new后面的方括号,里面要有符号类型还是无符号类型?4字节还是8字节?好像是有符号4字节的int吧?
------解决方案--------------------
size_t???
------解决方案--------------------
new[] 代表new一个数组
------解决方案--------------------
int *array = new int[4];
------解决方案--------------------
准确类型是
size_t
无符号整型
实际类型 大概是
unsigned int
unsinged long ;
或者
unsigned long long ;
不知道这是标准,还是事实标准。
------解决方案--------------------
参见C++标准5.3.4.6
第一级[]中的表达式结果是一个int类型的常量或变量, 如果值为负, 行为未定义
多级[]的后续各级表达式必须是一个正的常量
------解决方案--------------------
建议使用u_int_32
------解决方案--------------------
size_t,貌似这东西就是用来干这个的,注意这东西是无符号的,放在for循环里有时会杯具
------解决方案--------------------
http://en.cppreference.com/w/cpp/memory/new/operator_new
------解决方案--------------------
为负值就会未定义么? (...)
不是说[]的操作,会解析为指针的操作么?
a[5]就解析为*(a+5),所以*(5+a)就相当于5[a]这种么?
那*(a-1)应该可以写成a[-1]的吧?
(真心不清楚才问的,不是故意抬杠)
------解决方案--------------------
这是在new, 相当于数组定义, 不是在使用
------解决方案--------------------
size_t
------解决方案--------------------
看到你说的,就忘了楼主的问题情境。。。![new[ 这里是什么变量类型 ],该如何处理 new[ 这里是什么变量类型 ],该如何处理](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzAxLzI0LzEwNTIzNjEyOS5naWY=)
------解决方案--------------------
默认类型是size_t,而size_t一般被定义为unsigned long。因此,在32位系统下为4字节,在64位系统下为8字节~
new后面的方括号,里面要有符号类型还是无符号类型?4字节还是8字节?好像是有符号4字节的int吧?
------解决方案--------------------
size_t???
------解决方案--------------------
new[] 代表new一个数组
------解决方案--------------------
int *array = new int[4];
------解决方案--------------------
准确类型是
size_t
无符号整型
实际类型 大概是
unsigned int
unsinged long ;
或者
unsigned long long ;
不知道这是标准,还是事实标准。
------解决方案--------------------
参见C++标准5.3.4.6
第一级[]中的表达式结果是一个int类型的常量或变量, 如果值为负, 行为未定义
多级[]的后续各级表达式必须是一个正的常量
------解决方案--------------------
建议使用u_int_32
------解决方案--------------------
size_t,貌似这东西就是用来干这个的,注意这东西是无符号的,放在for循环里有时会杯具
------解决方案--------------------
http://en.cppreference.com/w/cpp/memory/new/operator_new
------解决方案--------------------
为负值就会未定义么? (...)
不是说[]的操作,会解析为指针的操作么?
a[5]就解析为*(a+5),所以*(5+a)就相当于5[a]这种么?
那*(a-1)应该可以写成a[-1]的吧?
(真心不清楚才问的,不是故意抬杠)
------解决方案--------------------
这是在new, 相当于数组定义, 不是在使用
------解决方案--------------------
size_t
void * operator new[](size_t _Size)
------解决方案--------------------
这是在new, 相当于数组定义, 不是在使用
看到你说的,就忘了楼主的问题情境。。。
------解决方案--------------------
默认类型是size_t,而size_t一般被定义为unsigned long。因此,在32位系统下为4字节,在64位系统下为8字节~