代码:
#include<stdio.h>
#include<stdlib.h>
void *av_malloc(unsigned int size)
{
void *ptr = NULL;
long int diff;
ptr = malloc(size+16);
if(!ptr)
return ptr;
diff= ((-(long)ptr - 1)&15) + 1;
ptr = (char*)ptr + diff;
((char*)ptr)[-1]= diff;
return ptr;
}
int main()
{
char *p;
p=av_malloc(100);
printf("address is %d/n",(long)p);
return 0;
}
本文介绍了一个用C语言实现的自定义内存分配函数av_malloc。该函数通过增加内存块的头部信息来实现内存对齐,确保返回的指针能够满足16字节对齐的要求。通过对原始内存分配进行包装并调整,提高了内存分配的效率和安全性。
702

被折叠的 条评论
为什么被折叠?



