| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 495 人关注过本帖
标题:关于动态内存分配
只看楼主 加入收藏
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
 问题点数:0 回复次数:5 
关于动态内存分配
typedef unsigned short int USHORT;  
#include   <iostream.h>   
int   main()   
{   
USHORT *pInt = new USHORT;   
*pInt=10;
  cout<<pInt<<endl;  
cout<<"*pInt: "<<*pInt<<endl;   
delete pInt;   //pInt为一迷途指针!
long *pLong = new long;
cout<<pInt<<endl;   
cout<<pLong<<endl;
为什么pInt和pLong指向的是同一个地址呢?不是动态分配的么?再说长度也不一样啊???不明白为什么动态分配成一样的
搜索更多相关主题的帖子: 内存 include 动态 
2012-06-13 21:38
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
pInt都已经delete了再输出其值有意义么?
为了防止pInt被删除后的某些误操作,delete动态分配的指针之后,最好设置pInt = 0;

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-06-13 21:47
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
动态分配 可能一样 可能不一样

至于这里嘛 可能是一样的 也没什么值得大惊小怪的 一样就一样呗

具体说就跟硬件平台相关了 在你的平台上面 大小不一样体现在某个地址后面多少个字节是一个变量 对于int 在32位环境 就是某个地址后面的4个字节为一个int 对于unsigned short int 是2个字节 但开头可能是一样的 这里一样的原因就是动态分配的开始区域是固定的 你要想不一样很简单 多分配几次试试
2012-06-13 21:55
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
而且你这个属于C++罢 在这问

对了 为啥我的gcc编译不过这个呢

#include <iostream.h>

找不到 啥原因?
2012-06-13 21:58
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
得分:0 
回复 4楼 zklhp
不好意思,我也不知道是啥原因,我再问一下哈,如果程序里面只有这两句关于动态分配内存的,是不是我再运行n次还是这个结果啊,
2012-06-13 22:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
一般情况下再运行也这样
 
不过貌似win有个随机地址还是什么的技术 vista以上的系统有 如果有这个东西不知道还一样不一样
 
我上面说的一般情况是对XP说的

[ 本帖最后由 zklhp 于 2012-6-14 10:53 编辑 ]
2012-06-13 23:07
快速回复:关于动态内存分配
数据加载中...
 
   



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

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