malloc函数在51单片机上的怪现象,不信自己试试
各位是这个才对,,我用的stc89c55想测试一下malloc函数但编译后无错误,但有两个警告,当我下到单片机里,结果是灯全不亮,两种结果都不是,,我郁闷啊,,有高手遇到过这样的事吗,不信试试,,
#define NULL 0 //定义NULL为空
#define uchar unsigned char //宏定义
#include <REGX55.H> //调用55头文件
#include<stdlib.h> //包含头文件
void main()
{
uchar *point = NULL; //定义uchar型指针初始化为空
point= (uchar*)malloc(sizeof(uchar)); //调用malloc函数且赋值于point
if (point==NULL) //判断申请是否成功,如果不成功点亮p2口所有灯
{
P2=0;
}
else //如果申请成功赋值*P内容十进制数87 ,且取其中内容赋值于p2口
{
(*point)=87;
P2=(*point);
}
free(point); //释放指针
point=NULL; //防止产生野指针
while(1); //暂停程序
}
assembling STARTUP.A51...
compiling 普中--灯试验.c...
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_INIT_MEMPOOL?INIT_MEM
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?C_INITSEG
Program Size: data=13.0 xdata=8 code=612
creating hex file from "普中--灯试验"...
"普中--灯试验" - 0 Error(s), 2 Warning(s).