指针
来源:互联网 发布:windows mediaplayer11 编辑:程序博客网 时间:2024/04/29 18:23
1)野指针
os为每个函数维护一个栈,如果在这个函数体内声明一个指针
void f(){
A a=new A();
..
delete a;
a=NULL; //这个地方如果不让a指向NULL,那么a是指向堆上的还是栈上的一块空间?按道理是指向堆的,因为是在堆上分配的内存,但又感觉可能指向函数栈内的某快地址
}
2)指针本身是由什么存放的?可以不可以把指针就理解为一个地址的别名?
3)我用delete或free把指针指向的内容删除了,同时将指针指向NULL,但指针本身还是存在的,只不过指向NULL.对吧
那如何彻底删除这个指针? 不但删除指针指向的内容,同时删除其本身
问题点数:20 回复次数:5 显示所有回复显示星级回复显示楼主回复
believefym
feng
等 级:
发表于:2007-10-23 08:50:291楼 得分:0
1,指向堆,只不过不重新赋为NULL就成为一个野指针,因为指向的内容已经被删除了
2,指针本身就是一个整型,内容就是地址
3,基于第二点,指针本身是存放在栈上的,不需要我们自己手动释放,只有指针指向的堆上的空间(new 或malloc出来的)才需要我们释放
mimong_lin
听雨
等 级:
发表于:2007-10-23 08:55:582楼 得分:0
都给1楼抢光了。
seraphsky
等 级:
发表于:2007-10-23 08:58:413楼 得分:0
谢谢楼上5颗星
一会没问题我就结贴
我想问下
指针本身是一个unsigned int吗
jixingzhong
瞌睡虫·星辰
等 级:
发表于:2007-10-23 08:58:554楼 得分:0
1 a还是指向原来 new 获得的空间地址,只是这个地址已经被delete了,再使用a操作会非法
2 指针本身在栈中,其值就是一个整型值,值的内容为指针指向的 地址
3 指针的生命期结束后,指针自动消除。无法手动控制其生命期。
seraphsky
等 级:
发表于:2007-10-23 09:01:045楼 得分:0
是不是所有的指针都是4字节的(对于目前的系统来说?)
我sizeof(int *) sizeof(float *)
sizeof (A *)全是4
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- [图示]中国人民币整套
- SQL SERVER 2000使用链接服务器操作ORACLE数据库
- petshop4.0 详解之五(PetShop之业务逻辑层设计)
- 试验网站#1搜索引擎优化收录情况记录(断续运行)2007-10-23
- Freemarker学习归纳(一)
- 指针
- 走出资金管理的迷宫
- OWC11绘制雷达图
- 弹出窗口总结
- “/”应用程序中的服务器错误——已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中
- qt4:一个简单而完整的例子
- 如何将第三方控件嵌入ToolStrip控件,并提供Design-Time支持
- 二叉树 java实现
- 文件系统过滤驱动基础知识