malloc alignment
来源:互联网 发布:沥青路面厚度设计软件 编辑:程序博客网 时间:2024/06/12 20:32
#include <stdio.h>#include <stdlib.h>void *my_malloc(int size , int align){ if(size <= 0 || align <= 0) return NULL; int real_size = size + align; real_size += sizeof(void *); void *ptr = malloc(real_size);// printf("old address : %p\n" , ptr); if(NULL == ptr) return NULL; void *old = ptr; unsigned long value = (unsigned long)ptr; if(!(value % align)) { value += align; } else { value = (value / align + 1) * align; } ptr = (void *)value; *(void **)((char *)ptr - sizeof(void *)) = old; return ptr;}void my_free(void *ptr){ void *old = *(void **)((char *)ptr + sizeof(void *)); free(old);}int main(){ void *ptr = my_malloc(1000 , 1024); printf("first address : %p\n" , ptr); my_free(ptr); return 0;}
// second edition
void *_aligned_malloc(size_t size){ void *tempPtr = malloc(size + 4); char offset = 4 - ((int)tempPtr % 4); char *alignedPtr = (char*)tempPtr + offset; alignedPtr[-1] = offset; return (void*)alignedPtr;}void _aligned_free(void *ptr){ char offset = ((char*)ptr)[-1]; free((char*)ptr - offset);}
0 0
- malloc alignment
- alignment
- Alignment
- Alignment
- malloc
- malloc
- malloc()
- malloc
- malloc
- Malloc
- malloc
- malloc
- malloc
- malloc
- malloc
- malloc
- malloc
- malloc
- 2、JS中判断分数——用一个对话框的形式
- Epoll模型详解
- 利用V4L2编写的USB摄像头程序1【经OK6410验证成功】
- 【cocos2d-js官方文档】十七、事件分发机制
- 在Qt下配置opencv2.4.9
- malloc alignment
- poj2676--Sudoku(搜索练习5-数独游戏)
- DRP之synchronized及锁的思考
- iOS内存管理(一)
- USACO 1.3 Prime Cryptarithm
- dwr函数调用一点小问题
- 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
- 【Android入门 三】创建项目时,有关appcompat_v7工程报错问题的分析和排除
- 一个衡中走出的小程序员