我有以下代码:
int size = 0;
void* ptr;
ptr = malloc(9); //we want to allocate 9 bytes
size = sizeof(*ptr);
printf("size = %d\n", size);
这导致大小等于1
。有没有办法让大小9
??
答案 0 :(得分:4)
有没有办法让尺寸达到9?
没有便携的方法可以找到它。
但如果您使用的是GNU系统(Glibc),则可以使用malloc_usable_size(3)
。
注意:malloc_usable_size
返回的尺寸可能会大于相应malloc
的尺寸。
答案 1 :(得分:1)
没有。如果你想记住malloc分配的内存大小,你应该将它存储在其他地方。
你也可以使用一个数组,然后sizeof
会给你一个合适的结果......但如果你使用void *
类型,它就无法工作。