资源简介
从LZMA SDK里面挑出来的,可用在纯C项目里。
文件清单:
Alloc.c
Alloc.h
LzFind.c
LzFind.h
LzFindMt.c
LzFindMt.h
LzmaDec.c
LzmaDec.h
LzmaEnc.c
LzmaEnc.h
LzmaLib.c
LzmaLib.h
Threads.c
Threads.h
Types.h
文件清单:
Alloc.c
Alloc.h
LzFind.c
LzFind.h
LzFindMt.c
LzFindMt.h
LzmaDec.c
LzmaDec.h
LzmaEnc.c
LzmaEnc.h
LzmaLib.c
LzmaLib.h
Threads.c
Threads.h
Types.h
代码片段和文件信息
/* Alloc.c -- Memory allocation functions
2008-09-24
Igor Pavlov
Public domain */
#ifdef _WIN32
#include
#endif
#include
#include “Alloc.h“
/* #define _SZ_ALLOC_DEBUG */
/* use _SZ_ALLOC_DEBUG to debug alloc/free operations */
#ifdef _SZ_ALLOC_DEBUG
#include
int g_allocCount = 0;
int g_allocCountMid = 0;
int g_allocCountBig = 0;
#endif
void *MyAlloc(size_t size)
{
if (size == 0)
return 0;
#ifdef _SZ_ALLOC_DEBUG
{
void *p = malloc(size);
fprintf(stderr “\nAlloc %10d bytes count = %10d addr = %8X“ size g_allocCount++ (unsigned)p);
return p;
}
#else
return malloc(size);
#endif
}
void MyFree(void *address)
{
#ifdef _SZ_ALLOC_DEBUG
if (address != 0)
fprintf(stderr “\nFree; count = %10d addr = %8X“ --g_allocCount (unsigned)address);
#endif
free(address);
}
#ifdef _WIN32
void *MidAlloc(size_t size)
{
if (size == 0)
return 0;
#ifdef _SZ_ALLOC_DEBUG
fprintf(stderr “\nAlloc_Mid %10d bytes; count = %10d“ size g_allocCountMid++);
#endif
return VirtualAlloc(0 size MEM_COMMIT PAGE_READWRITE);
}
void MidFree(void *address)
{
#ifdef _SZ_ALLOC_DEBUG
if (address != 0)
fprintf(stderr “\nFree_Mid; count = %10d“ --g_allocCountMid);
#endif
if (address == 0)
return;
VirtualFree(address 0 MEM_RELEASE);
}
#ifndef MEM_LARGE_PAGES
#undef _7ZIP_LARGE_PAGES
#endif
#ifdef _7ZIP_LARGE_PAGES
SIZE_T g_LargePageSize = 0;
typedef SIZE_T (WINAPI *GetLargePageMinimumP)();
#endif
void SetLargePageSize()
{
#ifdef _7ZIP_LARGE_PAGES
SIZE_T size = 0;
GetLargePageMinimumP largePageMinimum = (GetLargePageMinimumP)
GetProcAddress(GetModuleHandle(TEXT(“kernel32.dll“)) “GetLargePageMinimum“);
if (largePageMinimum == 0)
return;
size = largePageMinimum();
if (size == 0 || (size & (size - 1)) != 0)
return;
g_LargePageSize = size;
#endif
}
void *BigAlloc(size_t size)
{
if (size == 0)
return 0;
#ifdef _SZ_ALLOC_DEBUG
fprintf(stderr “\nAlloc_Big %10d bytes; count = %10d“ size g_allocCountBig++);
#endif
#ifdef _7ZIP_LARGE_PAGES
if (g_LargePageSize != 0 && g_LargePageSize <= (1 << 30) && size >= (1 << 18))
{
void *res = VirtualAlloc(0 (size + g_LargePageSize - 1) & (~(g_LargePageSize - 1))
MEM_COMMIT | MEM_LARGE_PAGES PAGE_READWRITE);
if (res != 0)
return res;
}
#endif
return VirtualAlloc(0 size MEM_COMMIT PAGE_READWRITE);
}
void BigFree(void *address)
{
#ifdef _SZ_ALLOC_DEBUG
if (address != 0)
fprintf(stderr “\nFree_Big; count = %10d“ --g_allocCountBig);
#endif
if (address == 0)
return;
VirtualFree(address 0 MEM_RELEASE);
}
#endif
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 64757 2011-01-06 17:03 LzmaEnc.c
文件 1524 2011-01-06 17:03 LzmaLib.c
文件 2712 2011-01-06 17:03 Threads.c
文件 660 2011-01-06 17:03 Alloc.h
文件 3405 2011-01-06 17:03 LzFind.h
文件 2546 2011-01-06 17:03 LzFindMt.h
文件 7096 2011-01-06 17:03 LzmaDec.h
文件 2985 2011-01-06 17:03 LzmaEnc.h
文件 4479 2011-01-06 17:03 LzmaLib.h
文件 2014 2011-01-06 17:03 Threads.h
文件 5667 2011-02-18 15:56 Types.h
文件 2811 2011-01-06 17:03 Alloc.c
文件 20473 2011-01-06 17:03 LzFind.c
文件 22964 2011-01-06 17:03 LzFindMt.c
文件 28164 2011-02-18 16:42 LzmaDec.c
----------- --------- ---------- ----- ----
172257 15
- 上一篇:步进电机课程设计(个人设计)
- 下一篇:Google Earth KML文件生成工具
相关资源
- 51单片机PCB设计图
- ado数据库MFC图书管理系统vs2010
- 先进先出库存管理excel表格.rar
- [免费]强大的OFFICE经验(Word Excel)
- [免费]图像识别c 源码
- PC -- 单片机的串口数据传输系统设计
- UNICODE GBK双向码表二进制文件
- 小型抽签程序 C 简单实用
- 小鸡快跑游戏.
- NRF24L01实现51与STM32双向通讯
- 基于c8051f020的AD转换程序及LCD显示程序
- CCP标定例程
- VPC3_DPV1源代码,Profibus
- mfc单文档窗体画线与写字
- 地下停车场CAD设计图
- 一个简单的verilog编写的DMA IP CORE,和
- 实时显示钢筋标注面积V0.44
- 硬盘秒解封
- Adobe Illustrator CS5原版amtlib.dll文件
- websocket实现一对一聊天
- ipv6网络抓包程序
- 外点法程序
- 外罚函数程序
- MCGS触摸屏西门子s7_1200驱动
- GPRS(MC35型号)的发送短信程序
- jcrop v0.9.12
- Qt Creator opengl实现四元数鼠标控制轨迹
- 简单的房屋租赁系统
- PC 串口调试软件
- .net网站服装销售系统(MVC)
评论
共有 条评论