C51 实现动态内存分配
前几天尝试了一下C51 keil4编译其中对 malloc的函数的调用,最后感觉可以读取 len 的长度来实现内存分配;
今天尝试写了一下;程序如下;
/********************************************************************************************************/
/* 静态数组长度 */
#define OSAL_MEMORY_LEN 256 /* 静态数组最大长度 */
/********************************************************************************************************/
/********************************************************************************************************/
/* 局部变量定义 */
/* 系统随机分配一个数组,将数组的首地址和数组的长度N作为堆区的空间参数 */
static uint8 x_data membuf[OSAL_MEMORY_LEN];
/********************************************************************************************************/
/*
**********************************************************************************************************
**功能描述: 打印指针的地址及其所指向的内容
**入口参数:
** @*addr --- -要打印的地址起始位置
** @len --- -要打印的地址的长度
**出口参数: 无
**-------------------------=------------------------------------
**函数注释: 无
**********************************************************************************************************
*/
void uart_print_register(uint8 *addr, uint16 len)
{
uint8 tmp[16];
uint16 i;
for (i=0; i<len; i++)
{
<span style="white-space:pre"> </span>memset(tmp, 0, sizeof(tmp));
sprintf(tmp,"%p=0x%-4.2X ",addr,(uint16)*addr++);
uart_print_string(UART1, tmp);
if ((i+1)%8 == 0)
{
uart_print_enter(UART1);
}
}
uart_print_enter(UART1);
}
/*
**********************************************************************************************************
**功能描述: 初始化 membuf 静态数组;并调用 init_mempool 函数来初始化动态内存
**入口参数: 无
**出口参数: 无
**-------------------------=------------------------------------
**函数注释: 无
**********************************************************************************************************
*/
static void memory_init_membuf(void)
{
memset (membuf, 0, sizeof(membuf));
init_mempool(membuf, sizeof(membuf)); /* 来初始化 membuf[] 数组;得到一个可以动态分配的堆 */
}
/*
**********************************************************************************************************
**功能描述: 获取动态内存堆中剩余可分配的字节数
**入口参数: 无
**出口参数: 无
**-------------------------=------------------------------------
**函数注释: 无
**********************************************************************************************************
*/
static uint16 memory_read_stacklen(void)
{
uint16 lw_retlen = 0;
if (455 >= OSAL_MEMORY_LEN)
{
lw_retlen = ((uint16)membuf[2] << 8) | membuf[3];
}
else
{
lw_retlen = ((uint16)membuf[3] << 8) | membuf[4];
}
return lw_retlen;
}
/*
**********************************************************************************************************
**功能描述: 动态内存分配
**入口参数: @*num_bytes --- -需要分配的字节数
**出口参数: 未确定类型的指针
**-------------------------=------------------------------------
**函数注释:
** malloc 向系统申请分配指定size个字节的内存空间
** 返回类型是 void* 类型; void* 表示未确定类型的指针
** C,C++规定, void* 类型可以通过类型转换强制转换为任何其它类型的指针
**********************************************************************************************************
*/
void *osal_malloc(uint16 num_bytes)
{
void *lp = NULL;
if ( num_bytes <= memory_read_stacklen() )
{
lp = malloc(num_bytes);
}
return lp;
}
/*
**********************************************************************************************************
**功能描述: 动态分配完内存后,自动初始化该内存空间为零
**入口参数:
** @*num_bytes --- -需要分配的字节数
** @size --- -需要分配的变量字长
**出口参数: 未确定类型的指针
**-------------------------=------------------------------------
**函数注释:
** calloc 内存的动态存储区中分配n个长度为size的连续空间
** 返回类型是 void* 类型; void* 表示未确定类型的指针
** C,C++规定, void* 类型可以通过类型转换强制转换为任何其它类型的指针
**********************************************************************************************************
*/
void *osal_calloc(uint16 num_bytes, unsigned int size)
{
void *lp = NULL;
if ( num_bytes <= memory_read_stacklen() )
{
lp = calloc(num_bytes,size);
}
return lp;
}
/*
**********************************************************************************************************
**功能描述: 释放 malloc 等函数申请的动态内存
**入口参数: @*ptr --- -malloc 等函数申请的动态内存的指针
**出口参数: 无
**-------------------------=------------------------------------
**函数注释:
** 使用后该指针变量一定要重新指向NULL,防止野指针出现,有效规避误操作
** 对于free(p)这句语句,如果p是NULL指针, 那么free对p无论操作多少次都不会出问题
** 如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误
**********************************************************************************************************
*/
void osal_free(void *ptr)
{
free(ptr);
ptr = NULL;
}
/*
**********************************************************************************************************
**功能描述: 从 src 复制 len 个字节内存到 dst
**入口参数:
** @*src --- -源地址
** @*dst --- -目标地址
** @len --- -拷贝的长度
**出口参数: 返回目标指针
**-------------------------=------------------------------------
**函数注释:
** 使用后该指针变量一定要重新指向NULL,防止野指针出现,有效规避误操作
** 对于free(p)这句语句,如果p是NULL指针, 那么free对p无论操作多少次都不会出问题
** 如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误
**********************************************************************************************************
*/
void *osal_memcpy(void *dst, const void *src, uint16 len)
{
uint8 *lp_dst;
const uint8 *lp_src;
lp_src = src;
lp_dst = dst;
while (len--)
{
*lp_dst++ = *lp_src++;
}
return (lp_dst);
}
经过多次的尝试,最后确定了如下的参数,静态内存的范围 在 255 - 3072 时,函数满足要求读取出剩余可用的字节数;
一下是测试程序:
首先开辟 lp1len = 100; lp2len = 100; 如果再开辟 lp3len = 100的话;返回NULL
void memory_testrun(void)
{
uint16 i = 0;
uint8 *lp1,*lp2,*lp3,*lp4,*lp5;
uart_print_register(membuf, sizeof(membuf));
uart_print_format(UART1, "stacklen is ", "%.0f", (fp32)memory_read_stacklen());
lp1 = osal_malloc(100);
lp4 = lp1;
if (NULL != lp1)
{
for(i=0; i<99; i++)
{
*lp1++ = i%10 + "0";
}
*lp1 = 0;
uart_print_debug_twostring(UART1, "lp1 :", lp4);
uart_print_debug_string(UART1, "lp1 is ok");
}
else
{
uart_print_debug_string(UART1, "lp1 is error");
}
lp2 = osal_malloc(100);
lp5 = lp2;
if (NULL != lp2)
{
for(i=0; i<99; i++)
{
*lp2++ = i%10 + "a";
}
*lp2 = 0;
uart_print_debug_twostring(UART1, "lp2 :", lp5);
uart_print_debug_string(UART1, "lp2 is ok");
//osal_free(lp5);
}
else
{
uart_print_debug_string(UART1, "lp2 is error");
}
lp3 = osal_calloc(100, sizeof(uint8));
if (NULL != lp3)
{
uart_print_debug_string(UART1, "lp3 is ok");
}
else
{
uart_print_debug_string(UART1, "lp3 is error");
}
uart_print_register(membuf, sizeof(membuf));
uart_print_format(UART1, "stacklen is ", "%.0f", (fp32)memory_read_stacklen());
}输出如下;我们卡伊看到 lp3失败;
x:01c8=0x00 x:01c9=0x00 x:01ca=0x00 x:01cb=0xFC x:01cc=0x00 x:01cd=0x00 x:01ce=0x00 x:01cf=0x00 x:01d0=0x00 x:01d1=0x00 x:01d2=0x00 x:01d3=0x00 x:01d4=0x00 x:01d5=0x00 x:01d6=0x00 x:01d7=0x00 x:01d8=0x00 x:01d9=0x00 x:01da=0x00 x:01db=0x00 x:01dc=0x00 x:01dd=0x00 x:01de=0x00 x:01df=0x00 x:01e0=0x00 x:01e1=0x00 x:01e2=0x00 x:01e3=0x00 x:01e4=0x00 x:01e5=0x00 x:01e6=0x00 x:01e7=0x00 x:01e8=0x00 x:01e9=0x00 x:01ea=0x00 x:01eb=0x00 x:01ec=0x00 x:01ed=0x00 x:01ee=0x00 x:01ef=0x00 x:01f0=0x00 x:01f1=0x00 x:01f2=0x00 x:01f3=0x00 x:01f4=0x00 x:01f5=0x00 x:01f6=0x00 x:01f7=0x00 x:01f8=0x00 x:01f9=0x00 x:01fa=0x00 x:01fb=0x00 x:01fc=0x00 x:01fd=0x00 x:01fe=0x00 x:01ff=0x00 x:0200=0x00 x:0201=0x00 x:0202=0x00 x:0203=0x00 x:0204=0x00 x:0205=0x00 x:0206=0x00 x:0207=0x00 x:0208=0x00 x:0209=0x00 x:020a=0x00 x:020b=0x00 x:020c=0x00 x:020d=0x00 x:020e=0x00 x:020f=0x00 x:0210=0x00 x:0211=0x00 x:0212=0x00 x:0213=0x00 x:0214=0x00 x:0215=0x00 x:0216=0x00 x:0217=0x00 x:0218=0x00 x:0219=0x00 x:021a=0x00 x:021b=0x00 x:021c=0x00 x:021d=0x00 x:021e=0x00 x:021f=0x00 x:0220=0x00 x:0221=0x00 x:0222=0x00 x:0223=0x00 x:0224=0x00 x:0225=0x00 x:0226=0x00 x:0227=0x00 x:0228=0x00 x:0229=0x00 x:022a=0x00 x:022b=0x00 x:022c=0x00 x:022d=0x00 x:022e=0x00 x:022f=0x00 x:0230=0x00 x:0231=0x00 x:0232=0x00 x:0233=0x00 x:0234=0x00 x:0235=0x00 x:0236=0x00 x:0237=0x00 x:0238=0x00 x:0239=0x00 x:023a=0x00 x:023b=0x00 x:023c=0x00 x:023d=0x00 x:023e=0x00 x:023f=0x00 x:0240=0x00 x:0241=0x00 x:0242=0x00 x:0243=0x00 x:0244=0x00 x:0245=0x00 x:0246=0x00 x:0247=0x00 x:0248=0x00 x:0249=0x00 x:024a=0x00 x:024b=0x00 x:024c=0x00 x:024d=0x00 x:024e=0x00 x:024f=0x00 x:0250=0x00 x:0251=0x00 x:0252=0x00 x:0253=0x00 x:0254=0x00 x:0255=0x00 x:0256=0x00 x:0257=0x00 x:0258=0x00 x:0259=0x00 x:025a=0x00 x:025b=0x00 x:025c=0x00 x:025d=0x00 x:025e=0x00 x:025f=0x00 x:0260=0x00 x:0261=0x00 x:0262=0x00 x:0263=0x00 x:0264=0x00 x:0265=0x00 x:0266=0x00 x:0267=0x00 x:0268=0x00 x:0269=0x00 x:026a=0x00 x:026b=0x00 x:026c=0x00 x:026d=0x00 x:026e=0x00 x:026f=0x00 x:0270=0x00 x:0271=0x00 x:0272=0x00 x:0273=0x00 x:0274=0x00 x:0275=0x00 x:0276=0x00 x:0277=0x00 x:0278=0x00 x:0279=0x00 x:027a=0x00 x:027b=0x00 x:027c=0x00 x:027d=0x00 x:027e=0x00 x:027f=0x00 x:0280=0x00 x:0281=0x00 x:0282=0x00 x:0283=0x00 x:0284=0x00 x:0285=0x00 x:0286=0x00 x:0287=0x00 x:0288=0x00 x:0289=0x00 x:028a=0x00 x:028b=0x00 x:028c=0x00 x:028d=0x00 x:028e=0x00 x:028f=0x00 x:0290=0x00 x:0291=0x00 x:0292=0x00 x:0293=0x00 x:0294=0x00 x:0295=0x00 x:0296=0x00 x:0297=0x00 x:0298=0x00 x:0299=0x00 x:029a=0x00 x:029b=0x00 x:029c=0x00 x:029d=0x00 x:029e=0x00 x:029f=0x00 x:02a0=0x00 x:02a1=0x00 x:02a2=0x00 x:02a3=0x00 x:02a4=0x00 x:02a5=0x00 x:02a6=0x00 x:02a7=0x00 x:02a8=0x00 x:02a9=0x00 x:02aa=0x00 x:02ab=0x00 x:02ac=0x00 x:02ad=0x00 x:02ae=0x00 x:02af=0x00 x:02b0=0x00 x:02b1=0x00 x:02b2=0x00 x:02b3=0x00 x:02b4=0x00 x:02b5=0x00 x:02b6=0x00 x:02b7=0x00 x:02b8=0x00 x:02b9=0x00 x:02ba=0x00 x:02bb=0x00 x:02bc=0x00 x:02bd=0x00 x:02be=0x00 x:02bf=0x00 x:02c0=0x00 x:02c1=0x00 x:02c2=0x00 x:02c3=0x00 x:02c4=0x00 x:02c5=0x00 x:02c6=0x00 x:02c7=0x00 stacklen is 252 lp1 :012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 lp1 is ok lp2 :abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghi lp2 is ok lp3 is error x:01c8=0x00 x:01c9=0x00 x:01ca=0x00 x:01cb=0x2C x:01cc=0x00 x:01cd=0x00 x:01ce=0x00 x:01cf=0x00 x:01d0=0x00 x:01d1=0x00 x:01d2=0x00 x:01d3=0x00 x:01d4=0x00 x:01d5=0x00 x:01d6=0x00 x:01d7=0x00 x:01d8=0x00 x:01d9=0x00 x:01da=0x00 x:01db=0x00 x:01dc=0x00 x:01dd=0x00 x:01de=0x00 x:01df=0x00 x:01e0=0x00 x:01e1=0x00 x:01e2=0x00 x:01e3=0x00 x:01e4=0x00 x:01e5=0x00 x:01e6=0x00 x:01e7=0x00 x:01e8=0x00 x:01e9=0x00 x:01ea=0x00 x:01eb=0x00 x:01ec=0x00 x:01ed=0x00 x:01ee=0x00 x:01ef=0x00 x:01f0=0x00 x:01f1=0x00 x:01f2=0x00 x:01f3=0x00 x:01f4=0x00 x:01f5=0x00 x:01f6=0x00 x:01f7=0x00 x:01f8=0x00 x:01f9=0x00 x:01fa=0x00 x:01fb=0x64 x:01fc=0x61 x:01fd=0x62 x:01fe=0x63 x:01ff=0x64 x:0200=0x65 x:0201=0x66 x:0202=0x67 x:0203=0x68 x:0204=0x69 x:0205=0x6A x:0206=0x61 x:0207=0x62 x:0208=0x63 x:0209=0x64 x:020a=0x65 x:020b=0x66 x:020c=0x67 x:020d=0x68 x:020e=0x69 x:020f=0x6A x:0210=0x61 x:0211=0x62 x:0212=0x63 x:0213=0x64 x:0214=0x65 x:0215=0x66 x:0216=0x67 x:0217=0x68 x:0218=0x69 x:0219=0x6A x:021a=0x61 x:021b=0x62 x:021c=0x63 x:021d=0x64 x:021e=0x65 x:021f=0x66 x:0220=0x67 x:0221=0x68 x:0222=0x69 x:0223=0x6A x:0224=0x61 x:0225=0x62 x:0226=0x63 x:0227=0x64 x:0228=0x65 x:0229=0x66 x:022a=0x67 x:022b=0x68 x:022c=0x69 x:022d=0x6A x:022e=0x61 x:022f=0x62 x:0230=0x63 x:0231=0x64 x:0232=0x65 x:0233=0x66 x:0234=0x67 x:0235=0x68 x:0236=0x69 x:0237=0x6A x:0238=0x61 x:0239=0x62 x:023a=0x63 x:023b=0x64 x:023c=0x65 x:023d=0x66 x:023e=0x67 x:023f=0x68 x:0240=0x69 x:0241=0x6A x:0242=0x61 x:0243=0x62 x:0244=0x63 x:0245=0x64 x:0246=0x65 x:0247=0x66 x:0248=0x67 x:0249=0x68 x:024a=0x69 x:024b=0x6A x:024c=0x61 x:024d=0x62 x:024e=0x63 x:024f=0x64 x:0250=0x65 x:0251=0x66 x:0252=0x67 x:0253=0x68 x:0254=0x69 x:0255=0x6A x:0256=0x61 x:0257=0x62 x:0258=0x63 x:0259=0x64 x:025a=0x65 x:025b=0x66 x:025c=0x67 x:025d=0x68 x:025e=0x69 x:025f=0x00 x:0260=0x00 x:0261=0x00 x:0262=0x00 x:0263=0x64 x:0264=0x30 x:0265=0x31 x:0266=0x32 x:0267=0x33 x:0268=0x34 x:0269=0x35 x:026a=0x36 x:026b=0x37 x:026c=0x38 x:026d=0x39 x:026e=0x30 x:026f=0x31 x:0270=0x32 x:0271=0x33 x:0272=0x34 x:0273=0x35 x:0274=0x36 x:0275=0x37 x:0276=0x38 x:0277=0x39 x:0278=0x30 x:0279=0x31 x:027a=0x32 x:027b=0x33 x:027c=0x34 x:027d=0x35 x:027e=0x36 x:027f=0x37 x:0280=0x38 x:0281=0x39 x:0282=0x30 x:0283=0x31 x:0284=0x32 x:0285=0x33 x:0286=0x34 x:0287=0x35 x:0288=0x36 x:0289=0x37 x:028a=0x38 x:028b=0x39 x:028c=0x30 x:028d=0x31 x:028e=0x32 x:028f=0x33 x:0290=0x34 x:0291=0x35 x:0292=0x36 x:0293=0x37 x:0294=0x38 x:0295=0x39 x:0296=0x30 x:0297=0x31 x:0298=0x32 x:0299=0x33 x:029a=0x34 x:029b=0x35 x:029c=0x36 x:029d=0x37 x:029e=0x38 x:029f=0x39 x:02a0=0x30 x:02a1=0x31 x:02a2=0x32 x:02a3=0x33 x:02a4=0x34 x:02a5=0x35 x:02a6=0x36 x:02a7=0x37 x:02a8=0x38 x:02a9=0x39 x:02aa=0x30 x:02ab=0x31 x:02ac=0x32 x:02ad=0x33 x:02ae=0x34 x:02af=0x35 x:02b0=0x36 x:02b1=0x37 x:02b2=0x38 x:02b3=0x39 x:02b4=0x30 x:02b5=0x31 x:02b6=0x32 x:02b7=0x33 x:02b8=0x34 x:02b9=0x35 x:02ba=0x36 x:02bb=0x37 x:02bc=0x38 x:02bd=0x39 x:02be=0x30 x:02bf=0x31 x:02c0=0x32 x:02c1=0x33 x:02c2=0x34 x:02c3=0x35 x:02c4=0x36 x:02c5=0x37 x:02c6=0x38 x:02c7=0x00 stacklen is 44首先开辟 lp1len = 100; lp2len = 100;释放lp2; 如果再开辟 lp3len = 100的话;那么应该可以成功;把上面的函数这个 osal_free(lp5)加入函数中;
输出结果如下
x:01c8=0x00 x:01c9=0x00 x:01ca=0x00 x:01cb=0xFC x:01cc=0x00 x:01cd=0x00 x:01ce=0x00 x:01cf=0x00 x:01d0=0x00 x:01d1=0x00 x:01d2=0x00 x:01d3=0x00 x:01d4=0x00 x:01d5=0x00 x:01d6=0x00 x:01d7=0x00 x:01d8=0x00 x:01d9=0x00 x:01da=0x00 x:01db=0x00 x:01dc=0x00 x:01dd=0x00 x:01de=0x00 x:01df=0x00 x:01e0=0x00 x:01e1=0x00 x:01e2=0x00 x:01e3=0x00 x:01e4=0x00 x:01e5=0x00 x:01e6=0x00 x:01e7=0x00 x:01e8=0x00 x:01e9=0x00 x:01ea=0x00 x:01eb=0x00 x:01ec=0x00 x:01ed=0x00 x:01ee=0x00 x:01ef=0x00 x:01f0=0x00 x:01f1=0x00 x:01f2=0x00 x:01f3=0x00 x:01f4=0x00 x:01f5=0x00 x:01f6=0x00 x:01f7=0x00 x:01f8=0x00 x:01f9=0x00 x:01fa=0x00 x:01fb=0x00 x:01fc=0x00 x:01fd=0x00 x:01fe=0x00 x:01ff=0x00 x:0200=0x00 x:0201=0x00 x:0202=0x00 x:0203=0x00 x:0204=0x00 x:0205=0x00 x:0206=0x00 x:0207=0x00 x:0208=0x00 x:0209=0x00 x:020a=0x00 x:020b=0x00 x:020c=0x00 x:020d=0x00 x:020e=0x00 x:020f=0x00 x:0210=0x00 x:0211=0x00 x:0212=0x00 x:0213=0x00 x:0214=0x00 x:0215=0x00 x:0216=0x00 x:0217=0x00 x:0218=0x00 x:0219=0x00 x:021a=0x00 x:021b=0x00 x:021c=0x00 x:021d=0x00 x:021e=0x00 x:021f=0x00 x:0220=0x00 x:0221=0x00 x:0222=0x00 x:0223=0x00 x:0224=0x00 x:0225=0x00 x:0226=0x00 x:0227=0x00 x:0228=0x00 x:0229=0x00 x:022a=0x00 x:022b=0x00 x:022c=0x00 x:022d=0x00 x:022e=0x00 x:022f=0x00 x:0230=0x00 x:0231=0x00 x:0232=0x00 x:0233=0x00 x:0234=0x00 x:0235=0x00 x:0236=0x00 x:0237=0x00 x:0238=0x00 x:0239=0x00 x:023a=0x00 x:023b=0x00 x:023c=0x00 x:023d=0x00 x:023e=0x00 x:023f=0x00 x:0240=0x00 x:0241=0x00 x:0242=0x00 x:0243=0x00 x:0244=0x00 x:0245=0x00 x:0246=0x00 x:0247=0x00 x:0248=0x00 x:0249=0x00 x:024a=0x00 x:024b=0x00 x:024c=0x00 x:024d=0x00 x:024e=0x00 x:024f=0x00 x:0250=0x00 x:0251=0x00 x:0252=0x00 x:0253=0x00 x:0254=0x00 x:0255=0x00 x:0256=0x00 x:0257=0x00 x:0258=0x00 x:0259=0x00 x:025a=0x00 x:025b=0x00 x:025c=0x00 x:025d=0x00 x:025e=0x00 x:025f=0x00 x:0260=0x00 x:0261=0x00 x:0262=0x00 x:0263=0x00 x:0264=0x00 x:0265=0x00 x:0266=0x00 x:0267=0x00 x:0268=0x00 x:0269=0x00 x:026a=0x00 x:026b=0x00 x:026c=0x00 x:026d=0x00 x:026e=0x00 x:026f=0x00 x:0270=0x00 x:0271=0x00 x:0272=0x00 x:0273=0x00 x:0274=0x00 x:0275=0x00 x:0276=0x00 x:0277=0x00 x:0278=0x00 x:0279=0x00 x:027a=0x00 x:027b=0x00 x:027c=0x00 x:027d=0x00 x:027e=0x00 x:027f=0x00 x:0280=0x00 x:0281=0x00 x:0282=0x00 x:0283=0x00 x:0284=0x00 x:0285=0x00 x:0286=0x00 x:0287=0x00 x:0288=0x00 x:0289=0x00 x:028a=0x00 x:028b=0x00 x:028c=0x00 x:028d=0x00 x:028e=0x00 x:028f=0x00 x:0290=0x00 x:0291=0x00 x:0292=0x00 x:0293=0x00 x:0294=0x00 x:0295=0x00 x:0296=0x00 x:0297=0x00 x:0298=0x00 x:0299=0x00 x:029a=0x00 x:029b=0x00 x:029c=0x00 x:029d=0x00 x:029e=0x00 x:029f=0x00 x:02a0=0x00 x:02a1=0x00 x:02a2=0x00 x:02a3=0x00 x:02a4=0x00 x:02a5=0x00 x:02a6=0x00 x:02a7=0x00 x:02a8=0x00 x:02a9=0x00 x:02aa=0x00 x:02ab=0x00 x:02ac=0x00 x:02ad=0x00 x:02ae=0x00 x:02af=0x00 x:02b0=0x00 x:02b1=0x00 x:02b2=0x00 x:02b3=0x00 x:02b4=0x00 x:02b5=0x00 x:02b6=0x00 x:02b7=0x00 x:02b8=0x00 x:02b9=0x00 x:02ba=0x00 x:02bb=0x00 x:02bc=0x00 x:02bd=0x00 x:02be=0x00 x:02bf=0x00 x:02c0=0x00 x:02c1=0x00 x:02c2=0x00 x:02c3=0x00 x:02c4=0x00 x:02c5=0x00 x:02c6=0x00 x:02c7=0x00 stacklen is 252 lp1 :012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 lp1 is ok lp2 :abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghi lp2 is ok lp3 is ok x:01c8=0x00 x:01c9=0x00 x:01ca=0x00 x:01cb=0x2C x:01cc=0x00 x:01cd=0x00 x:01ce=0x00 x:01cf=0x00 x:01d0=0x00 x:01d1=0x00 x:01d2=0x00 x:01d3=0x00 x:01d4=0x00 x:01d5=0x00 x:01d6=0x00 x:01d7=0x00 x:01d8=0x00 x:01d9=0x00 x:01da=0x00 x:01db=0x00 x:01dc=0x00 x:01dd=0x00 x:01de=0x00 x:01df=0x00 x:01e0=0x00 x:01e1=0x00 x:01e2=0x00 x:01e3=0x00 x:01e4=0x00 x:01e5=0x00 x:01e6=0x00 x:01e7=0x00 x:01e8=0x00 x:01e9=0x00 x:01ea=0x00 x:01eb=0x00 x:01ec=0x00 x:01ed=0x00 x:01ee=0x00 x:01ef=0x00 x:01f0=0x00 x:01f1=0x00 x:01f2=0x00 x:01f3=0x00 x:01f4=0x00 x:01f5=0x00 x:01f6=0x00 x:01f7=0x00 x:01f8=0x00 x:01f9=0x00 x:01fa=0x00 x:01fb=0x64 x:01fc=0x00 x:01fd=0x00 x:01fe=0x00 x:01ff=0x00 x:0200=0x00 x:0201=0x00 x:0202=0x00 x:0203=0x00 x:0204=0x00 x:0205=0x00 x:0206=0x00 x:0207=0x00 x:0208=0x00 x:0209=0x00 x:020a=0x00 x:020b=0x00 x:020c=0x00 x:020d=0x00 x:020e=0x00 x:020f=0x00 x:0210=0x00 x:0211=0x00 x:0212=0x00 x:0213=0x00 x:0214=0x00 x:0215=0x00 x:0216=0x00 x:0217=0x00 x:0218=0x00 x:0219=0x00 x:021a=0x00 x:021b=0x00 x:021c=0x00 x:021d=0x00 x:021e=0x00 x:021f=0x00 x:0220=0x00 x:0221=0x00 x:0222=0x00 x:0223=0x00 x:0224=0x00 x:0225=0x00 x:0226=0x00 x:0227=0x00 x:0228=0x00 x:0229=0x00 x:022a=0x00 x:022b=0x00 x:022c=0x00 x:022d=0x00 x:022e=0x00 x:022f=0x00 x:0230=0x00 x:0231=0x00 x:0232=0x00 x:0233=0x00 x:0234=0x00 x:0235=0x00 x:0236=0x00 x:0237=0x00 x:0238=0x00 x:0239=0x00 x:023a=0x00 x:023b=0x00 x:023c=0x00 x:023d=0x00 x:023e=0x00 x:023f=0x00 x:0240=0x00 x:0241=0x00 x:0242=0x00 x:0243=0x00 x:0244=0x00 x:0245=0x00 x:0246=0x00 x:0247=0x00 x:0248=0x00 x:0249=0x00 x:024a=0x00 x:024b=0x00 x:024c=0x00 x:024d=0x00 x:024e=0x00 x:024f=0x00 x:0250=0x00 x:0251=0x00 x:0252=0x00 x:0253=0x00 x:0254=0x00 x:0255=0x00 x:0256=0x00 x:0257=0x00 x:0258=0x00 x:0259=0x00 x:025a=0x00 x:025b=0x00 x:025c=0x00 x:025d=0x00 x:025e=0x00 x:025f=0x00 x:0260=0x00 x:0261=0x00 x:0262=0x00 x:0263=0x64 x:0264=0x30 x:0265=0x31 x:0266=0x32 x:0267=0x33 x:0268=0x34 x:0269=0x35 x:026a=0x36 x:026b=0x37 x:026c=0x38 x:026d=0x39 x:026e=0x30 x:026f=0x31 x:0270=0x32 x:0271=0x33 x:0272=0x34 x:0273=0x35 x:0274=0x36 x:0275=0x37 x:0276=0x38 x:0277=0x39 x:0278=0x30 x:0279=0x31 x:027a=0x32 x:027b=0x33 x:027c=0x34 x:027d=0x35 x:027e=0x36 x:027f=0x37 x:0280=0x38 x:0281=0x39 x:0282=0x30 x:0283=0x31 x:0284=0x32 x:0285=0x33 x:0286=0x34 x:0287=0x35 x:0288=0x36 x:0289=0x37 x:028a=0x38 x:028b=0x39 x:028c=0x30 x:028d=0x31 x:028e=0x32 x:028f=0x33 x:0290=0x34 x:0291=0x35 x:0292=0x36 x:0293=0x37 x:0294=0x38 x:0295=0x39 x:0296=0x30 x:0297=0x31 x:0298=0x32 x:0299=0x33 x:029a=0x34 x:029b=0x35 x:029c=0x36 x:029d=0x37 x:029e=0x38 x:029f=0x39 x:02a0=0x30 x:02a1=0x31 x:02a2=0x32 x:02a3=0x33 x:02a4=0x34 x:02a5=0x35 x:02a6=0x36 x:02a7=0x37 x:02a8=0x38 x:02a9=0x39 x:02aa=0x30 x:02ab=0x31 x:02ac=0x32 x:02ad=0x33 x:02ae=0x34 x:02af=0x35 x:02b0=0x36 x:02b1=0x37 x:02b2=0x38 x:02b3=0x39 x:02b4=0x30 x:02b5=0x31 x:02b6=0x32 x:02b7=0x33 x:02b8=0x34 x:02b9=0x35 x:02ba=0x36 x:02bb=0x37 x:02bc=0x38 x:02bd=0x39 x:02be=0x30 x:02bf=0x31 x:02c0=0x32 x:02c1=0x33 x:02c2=0x34 x:02c3=0x35 x:02c4=0x36 x:02c5=0x37 x:02c6=0x38 x:02c7=0x00 stacklen is 44上面的函数只是简单的实现了内存的分配,是否能应用在真正的项目中还未可知;
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 链接脚本在编程中的高级运用之一:可变长数组
- 下一篇: C51回顾二
