打印

还是malloc()的问题,再请教

[复制链接]
1307|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zpf111|  楼主 | 2007-8-20 18:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天不能上传图片,今天我来手写出来请教。
我分别调用两次malloc,第一次P1=alloc(3);第二次P2=malloc(4);
仿真时内存分配成功,执行到P1=,alloc(3);后一条语句时候p1=0x000001,
P1+1=0x000002,在此之后到P2=malloc(4)之前没有释放内存。
但是程序执行到*P2=malloc(4)后P2=0x000001....居然和P1指向的同一个地址,可是*P1=alloc(3)得到的内存我没有释放掉啊。
请问这是什么问题呢?
因为单位不能上网
我在这里把程序大该的写一下:
main()
{
unsigned char *p1,*p2;
p1=malloc(3);
while(NULL==p1);
p1=0x01;
....

p2=malloc(3);
while(NULL==p2);
p2=0x02;
....

free(p1);
free(p2);
}

菜鸟在此致谢!

相关帖子

沙发
turmary| | 2007-8-20 20:58 | 只看该作者

没有初使化

在C51里跟PC不一样,
使用堆要有空间的
int  init_mempool          (void _MALLOC_MEM_ *p, unsigned int size);

这个函数在stdlib.h
里,这是干这个用的.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

1

粉丝