怎样得到指针所指空间大小
如果我用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;
}