| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 402 人关注过本帖
标题:这是为什么啊?
只看楼主 加入收藏
天岩
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-2-17
收藏
 问题点数:0 回复次数:3 
这是为什么啊?

第一程序获得一片内存空间,并且给这片内存空间赋值,第二个程序将第一程序获得的内存空间的首地址给一个指针,为什么不能将第一程序中初始化的内容输出?
A程序
/*
获得一片内存空间,将首地址给另外一个程序,
用另外一个程序来访问这个空间中的内容
*/

#include <stdio.h>
#define Number_zero 0;
#define Number_ten 10

void main(void)
{
int *ptri; /*获得的一片内存空间的首地址指针*/
int i=Number_zero; /*循环变量*/

ptri=(int *)malloc(sizeof(int)*Number_ten); /*获得首地址*/

printf("ptri==%x\n",ptri); /*打印首地址*/
getch();


for(;i<Number_ten;i++) /*给这片内存空间赋值*/
{
ptri[i]=i;
}

i=Number_zero ;

for(;i<Number_ten;i++) /*输出这片内存空间的内容*/
{
printf("ptri[%d]==%d\n",i,ptri[i]);

}
printf("\n");
printf("ptri(10)==%d\n",ptri);
printf("ptri(16)==%x",ptri);
getch();


}


B程序
/*
输入一片内存空间的首地址
将这片内存空间中的内容输出来
*/

#include <stdio.h>
#define Number_zero 0
#define Number_ten 10

void main(void)
{
int *ptr;
int i=Number_zero;

printf("Please input the add(16):");
scanf("%x",&ptr);

printf("ptr==%x\n",ptr);

for(;i<Number_ten;i++)
{
printf("ptr[%d]=%d\n",i,*ptr);
ptr++;
}

printf("\n");
printf("ptr(10)==%d\n",ptr);
printf("ptr(16)==%x",ptr);
getch();
}

2006-02-17 22:53
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
A程序执行完之后,ptri申请的内存已经被释放

因为如果A程序后面不管加不加free(ptri); B程序的执行结果都是一样的

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-17 23:16
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
异想天开,我能说的只有这四个字。深入了解你的系统平台再来考虑这个问题吧。

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-02-17 23:19
天岩
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-2-17
收藏
得分:0 
在a程序没有结束的时(还没有执行getch();),该片内存没有释放啊?此时来执行b程序,结果仍然不行?如果是操作系统的缘故,能否告知为何?

爱好C,但不精通;
2006-02-18 00:32
快速回复:这是为什么啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017666 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved