情况如下:
#include <malloc.h>
int size = 7;
double *a = new double[size];
cout << malloc_usable_size(a) / sizeof(*a) << endl;
//输出结果为 7
int size = 8;
double *a = new double[size];
cout << malloc_usable_size(a) / sizeof(*a) << endl;
//输出结果为 9
//sizeof(a)=sizeof(*a)=sizeof(double)=8
当 size=8 或 1024 其他偶数时,malloc_usable_size 会多一个 size
也就是数组长度为偶数情况下输出结果会比实际的加 1
我想问下这个要怎么处理才始终正确?
或者有没有其他更好的获取指针数组长度的方法?
非常感谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.