想问问int* a=new int[]这样的写法有没有错,赋值后如何获取长度
c++吧
全部回复
仅看楼主
level 3
90後_季末 楼主
int* a=new int[] 不指定长度。。编译能够通过但是好像很少见到这种写法。。delete的时候会出什么问题吗 还有这样的数组如何获取长度
2015年01月16日 01点01分 1
level 7
你试试看吧,我记忆中长度是随机的。或者不同计算机不同的一个固定值。
2015年01月16日 01点01分 2
那赋值后的有效长度如何获得呢比如让a[0]=1 a[1]=2;如何获得长度=2呢?试了sizeof不行。。。sizeof(a)的值是4 sizeof(*a)就变成首个元素占的空间
2015年01月16日 01点01分
回复 90後_季末 :sizeof(*a) / sizeof(int)
2015年01月16日 01点01分
@zarro_boogs sizeof(*a)是等于sizeof(int)的。。。。
2015年01月16日 03点01分
level 15
new出来的内存块是有大小记录的,系统由此来判断你是否非法访问了别的内存地址。不过这大小你看不到。
2015年01月16日 02点01分 3
是固定的么?那么有效长度如何获取?
2015年01月16日 03点01分
回复 90後_季末 :这个指针是无法使用的。运行时必定出错。
2015年01月16日 04点01分
回复 90後_季末 :因为有安全检查。别再问了[阴险]
2015年01月16日 05点01分
level 16
[惊讶]这编译器好奇特。
2015年01月16日 03点01分 4
VS诶。。[冷] 很奇葩吗
2015年01月16日 03点01分
回复 90後_季末 :[呼~]我确实没见过这样的语法
2015年01月16日 03点01分
level 3
90後_季末 楼主
顶一下
2015年01月16日 04点01分 5
1