I have the following code: int size = 0; void* ptr; ptr = malloc(9); //we want to allocate 9 bytes size = sizeof(*ptr); printf("size = %d\n", size); 这会导致大小等于1。有没有办法使大小为9?
有没有办法让大小变成9? 没有通用的方法可以找出这个信息。 但是,如果你使用GNU系统(Glibc),你可以使用malloc_usable_size(3)函数。 注意:malloc_usable_size返回的大小可能比相应的malloc给定的大小要大。
malloc
的实现在返回给程序的内存地址前,会存储一个内存控制块。因此,理论上你可以查看那里以找到已分配块的大小。如果你讨论了每个系统中内存控制块的细节,他们可能会对你印象深刻。但简单地说明程序本身必须跟踪这样的信息才是正确答案。换句话说,这个问题是一个展示你深度知识和经验的机会。 - user3386109