trealloc.c

来自「单片及c语言轻松入门的随书光盘」· C语言 代码 · 共 36 行

C
36
字号
#include <reg52.h>
#include <stdlib.h>
#include <absacc.h> //为使用init_mempool函数中的XBYTE定义而加入该头文件
#include <stdio.h> 	/* 为使用printf函数而加入 */
void tst_realloc (void) {
	void xdata *p;
	void xdata *new_p;
	init_mempool (&XBYTE [0x2000], 350);	//初始化存储器,指定开始地址及大小
//去掉该行程序会有连接警告
//当前结果是"Reallocation succed"
//如果将参数350改为103及以下,结果将是"Not enough memory space",即p=malloc(100)函数无法成功执行
//如果将参数350改为307及以下,结果将是"Reallocation failed",即new_p=realloc(p,200)函数无法成功执行
	p = malloc (100);
	if (p != NULL) 
	{
		new_p = realloc (p, 200);
		if (new_p != NULL) 
		{	p = new_p;
			printf ("Reallocation succeed\n");	
		}
		else 
			printf ("Reallocation failed\n");
	}
	else 
		printf("Not enough memory space\n");
}
void main()
{	SCON  = 0x50;    /*SCON:工作模式1,8-bit UART,允许接收*/
	TMOD |= 0x20;    /*TMOD:定时器T1,工作模式2, 8位自动重载方式*/
	TH1   = 0xf3;    /*当波特率为2400时,定时器初值*/
	TR1   = 1;       /*定时器T1开始运行*/
	TI    = 1;       /*允许发送数据*/
	for(;;)
		tst_realloc();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?