如果你用的是glibc的话,里面有个malloc_usable_size的函数,可以拿到malloc的大小。类似free,指针得是原始申请出来的指针,不能有偏移。
#include "malloc.h"
#include <iostream>
void get_malloc_size(void* p) {
size_t size = malloc_usable_size(p);
std::cout << "malloc size is: " << size << '\n';
}
int main() {
int* p = new int[1000];
get_malloc_size(p);
}
用上述代码在linux下测试,输出是4008,因为有对齐,所以比原来的大一点。
作者:知乎用户
链接:https://www.zhihu.com/question/295408436/answer/496614202
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。