标签:c arrays new-operator
在调试堆中,我可以获取由new []创建的数组大小:
int size = *((int *)((char *)ptr - 16));
如果数组的大小小于28(但我不知道为什么?0_0),则它可以正常工作.
这个技巧在发布模式下有效吗(不使用调试堆)?
如何获得阵列的大小(100%稳定工作)?
解决方法:
您依赖于实现细节.这就是您的特定实现如何存储放置数组的内存区域的大小的方式.如您所见,内存区域的大小可能大于分配的数组的大小.
如果您需要知道分配有new []的数组的大小,则必须保持该值不变.
标签:c,arrays,new-operator 来源: https://codeday.me/bug/20191011/1890381.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。