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
------解决方案--------------------
引用:
参见C++标准5.3.4.6
第一级[]中的表达式结果是一个int类型的常量或变量, 如果值为负, 行为未定义
多级[]的后续各级表达式必须是一个正的常量

为负值就会未定义么? (...)

不是说[]的操作,会解析为指针的操作么?
a[5]就解析为*(a+5),所以*(5+a)就相当于5[a]这种么?

那*(a-1)应该可以写成a[-1]的吧?

(真心不清楚才问的,不是故意抬杠)
------解决方案--------------------
引用:
Quote: 引用:

参见C++标准5.3.4.6
第一级[]中的表达式结果是一个int类型的常量或变量, 如果值为负, 行为未定义
多级[]的后续各级表达式必须是一个正的常量

为负值就会未定义么? (...)

不是说[]的操作,会解析为指针的操作么?
a[5]就解析为*(a+5),所以*(5+a)就相当于5[a]这种么?

那*(a-1)应该可以写成a[-1]的吧?

(真心不清楚才问的,不是故意抬杠)


这是在new, 相当于数组定义, 不是在使用
------解决方案--------------------
size_t
void * operator new[](size_t _Size)

------解决方案--------------------
引用:
这是在new, 相当于数组定义, 不是在使用

看到你说的,就忘了楼主的问题情境。。。new[ 这里是什么变量类型 ],该如何处理
------解决方案--------------------
默认类型是size_t,而size_t一般被定义为unsigned long。因此,在32位系统下为4字节,在64位系统下为8字节~