关于“为什么delete以后指针还能被赋值”一种描述
来源:互联网 发布:手机号查姓名软件 编辑:程序博客网 时间:2024/05/29 19:50
首先,系统知道哪一部分堆的线性空间被占掉了,new就是起这个作用,仅仅是声明一下(可能多了一个功能),因为堆的空间不一定是直接从系统调用获得的,堆的空间是这样管理的:程序先伸请一个大的堆空间,这个时候是通过系统调用获得空间,以后的每一次new都是从这个已获得的空间里面再进行零售分配,与系统调用无关,只有当这个大的堆空间不足时,才会再次调用系统调用申请更多空间(new触发).所以,即使一个指针被delete掉,指针的值如果不变,他所指向的空间仍然在那一个大块空间里,仍然是属于进程的线性地址空间,估计,这个空间的权限是可读可写可执行的,所以,delete掉以后,仍然可以对它赋值,读。
程序装载到线性地址空间是按分页进行的,好进行虚拟地址与物理地址的映射,而每个页都有一个权限,比如:代码段就是只读的,而堆对应的页的权限,是可读可写可执行。
转载:http://blog.chinaunix.net/uid-22174570-id-1786893.html
0 0
- 关于“为什么delete以后指针还能被赋值”一种描述
- delete指针以后应赋值为NULL
- delete指针之后应该赋值NULL
- delete指针之后应该赋值NULL
- delete指针之后应该赋值NULL
- 指针被delete之后应该赋值NULL
- delete指针之后应该赋值NULL
- delete指针后应该将指针赋值为NULL
- 关于delete C/C++ 指针
- 关于关系运算的一种简短描述
- 关于指针的一种用法
- C++在delete指针后要赋值为NULL
- VC++ delete指针后要赋值为NULL的原因
- C++在delete指针后要赋值为NULL
- C++ 指针 new delete 赋值各种情况总结
- 关于未指针数组赋值的问题
- 关于数组给指针赋值的问题
- C++ primer中关于new和delete工作的描述
- android studio 导入一个已有的android studio project作为lib使用
- viewpager+circilepageindicator
- libevent使用例子,从简单到复杂
- TCP 和 UDP 在socket编程中的区别
- 前端常见的一些正则表达式(一定范围内数字、小数位数、手机号、中英文名字包含少数名族)
- 关于“为什么delete以后指针还能被赋值”一种描述
- CAShapeLayer的strokeStart和strokeEnd属性
- htonl() htons()及inet_ntoa() inet_addr()的用法
- 交叉熵损失函数
- 如何让video宽高撑满父级
- C# BHO遍历iframe
- 笔记本电脑中的安全问题及解决
- xcode合并模拟器静态库和真机静态库
- mysql基础知识