怎样得到指针所指空间大小
如果我用malloc函数申请一块内存空间void *p = malloc(5);
...
怎样能通过指针p,去求malloc函数开辟了多大的空间?
#include <stdlib.h> void* my_malloc(size_t size) { void* data = malloc(size + sizeof(size_t)); if (data == NULL) return NULL; *(size_t*)data = size; return (void*)&((size_t*)data)[1]; } size_t my_get_size(void* data) { return ((size_t*)data)[-1]; } void my_free(void* data) { free((void*)&((size_t*)data)[-1]); } #define malloc my_malloc #define free my_free #define getsize my_get_size //////////////////////////////////////////////////////////////////////////////// #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *data = (char*)malloc(20); strcpy(data, "Hello World!"); puts(data); printf("data's len:%d, size:%d\n", strlen(data), getsize(data)); free(data); return 0; }