c-数组大小(新[])
作者:互联网
在调试堆中,我可以获取由new []创建的数组大小:
int size = *((int *)((char *)ptr - 16));
如果数组的大小小于28(但我不知道为什么?0_0),则它可以正常工作.
这个技巧在发布模式下有效吗(不使用调试堆)?
如何获得阵列的大小(100%稳定工作)?
解决方法:
您依赖于实现细节.这就是您的特定实现如何存储放置数组的内存区域的大小的方式.如您所见,内存区域的大小可能大于分配的数组的大小.
如果您需要知道分配有new []的数组的大小,则必须保持该值不变.
标签:c,arrays,new-operator 来源: https://codeday.me/bug/20191011/1890381.html