动态分配空间,地址为16的倍数(地址对齐)
2010-11-15 15:38
337 查看
代码:
#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;
}
#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;
}
相关文章推荐
- Linux c==静态链接的空间和地址分配(16)
- 数组不是指针——数组地址不能动态分配空间,一个小例子关于指针移动,以及malloc
- APUE 2-16 为路径名动态的分配存储空间
- 如何在C/C++中动态分配地址连续访问快速的二维数组
- C语言,内存对齐,内存分配,地址操作,结构体(二)
- 用calloc分配10块大小为4字节的内存空间,打印指针地址,并且打印出内存中的内容
- 【线性表】动态分配空间的实现
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- VC中出现“烫”和“屯”的原因(栈区的每一个字节都被0xCC填充了,也就是int 3h的机器码,动态分配的堆,VC的Debug用0xCD填充堆的空间,就出现了“屯”)
- 第十四周项目二 排序函数模板(动态分配空间+选择排序法)
- 32位和64位分配空间内存对齐
- 二维数组定义以及动态分配空间
- C语言的字符指针必须分配空间或者指向某个地址否则不能使用
- C++ 动态存储空间的分配和释放 new与malloc的区别
- 二维数组定义以及动态分配空间
- 第5周-项目3-人数不定的工资类-动态分配空间
- 使用malloc分别分配2KB的空间,然后用realloc调整为6KB的内存空间,打印指针地址
- 存储空间的动态分配与释放
- 进程的虚拟地址空间分配概述
- 二维数组定义以及动态分配空间