指针的内存布局

常量区的值是不可修改的,而栈区的值是可以修改的

所以不可以通过*pa来修改a的值

#include<iostream>
using namespace std;
int main()
{
const int a=5;
int b=9;
const int* pa=&a;
int *const pb=&b;
cout<<"a的值是"<<*pa<<endl;
cout<<"a的地址是"<<pa<<endl;
cout<<"b的值是"<<*pb<<endl;
cout<<"b的地址是"<<pb<<endl;
pa=&b;
//*pa=b;error
cout<<"*pa的值是"<<*pa<<endl;
cout<<"pa所指向的地址是"<<pa<<endl;
*pb=a;
//pb=&a;error
cout<<"*pb的值是"<<*pa<<endl;
cout<<"pb所指向的地址是"<<pa<<endl;
cout<<"a的值是"<<a<<endl;
cout<<"b的值是"<<b<<endl;
} 

此段代码运行的结果如下图

时间: 2024-09-20 21:39:33

指针的内存布局的相关文章

c++对象内存模型【内存布局】

出处:http://www.cnblogs.com/kekec/archive/2013/01/27/2822872.html #类中的元素 0. 成员变量   1. 成员函数   2. 静态成员变量   3. 静态成员函数   4. 虚函数   5. 纯虚函数 #影响对象大小的因素 0. 成员变量     1. 虚函数表指针(_vftptr)   2. 虚基类表指针(_vbtptr)   3. 内存对齐 _vftptr._vbtptr的初始化由对象的构造函数, 赋值运算符自动完成:对象生命周期

c++对象内存模型【内存布局】(转)

总结:1.按1继承顺序先排布基于每个父类结构.2.该结构包括:基于该父类的虚表.该父类的虚基类表.父类的父类的成员变量.父类的成员变量.3.多重继承且连续继承时,虚函数表按继承顺序排布函数与虚函数.4.而后排布子类的成员变量.5.排布虚基类的虚函数表.6.虚基类的成员变量 #类中的元素 0. 成员变量   1. 成员函数   2. 静态成员变量   3. 静态成员函数   4. 虚函数   5. 纯虚函数 #影响对象大小的因素 0. 成员变量     1. 虚函数表指针(_vftptr)   2

C++内存布局

#对象内存布局分类讨论 vc6变量查看器中(Locals,Watch1等),也可以看到部分对象布局的情况(不完整,且虚继承是错误的). vs2005及以后版本的编译器提供了/d1reportSingleClassLayout[类名]编译选项来查看对象完整的内存布局: cl classLayout.cpp /d1reportSingleClassLayoutCChildren 0. 单一类 (1). 空类 sizeof(CNull)=1(用于标识该对象) (2). 只有成员变量的类 int nVa

面向对象--多继承&amp;派生类对象内存布局分析&amp;各基类指针所指向的位置分析

背景 原文链接:ordeder  http://blog.csdn.net/ordeder/article/details/25477363 关于非虚函数的成员函数的调用机制,可以参考: http://blog.csdn.net/yuanyirui/article/details/4594805 成员函数的调用涉及到面向对象语言的反射机制. 虚函数表机制可以查看下面这个blog: http://blog.csdn.net/haoel/article/details/1948051 总结为: 其一

Java对象的内存布局

Java对象的内存布局:对象头(Header),实例数据(Instance Data),对齐填充(Padding):另外:不同的环境结果可能有差异,我所在的环境是HotSpot虚拟机,64位Windows. 对象头 对象头在32位系统上占用8bytes,64位系统上占用16bytes. System.out.println("sizeOf(new Object()) = " + sizeOf(new Object())); sizeOf(new Object()) = 16 实例数据

Qemu对x86静态内存布局的模拟

快乐虾 http://blog.csdn.NET/lights_joy/ [email protected] 本文适用于 QEMU-0.10.5 VS2008 欢迎转载,但请保留作者信息 在PC机中,由于早期版本的系统资源限制,其物理内存被分为多个不同的区域,并一直延续至今,那么QEMU是如何对这种静态内存布局进行模拟的呢? 1.1    整体内存分配 虽然PC机的物理内存被人为地分为多个不同的区域,但是在物理结构上它们仍然是连续的,因此qemu直接从宿主机中分配了一块内存: int main(

虚继承的内存布局手札1——基于VS2012

1.纸上得来总觉浅,低头debug才深刻. 对于<深度探索C++对象模型>这类型的书,得到的知识要去及时巩固才能实现永久记忆. 2.在实现了了虚拟继承归并分支之后的内容布局跟虚表的可复用存在极大关系. 继承的顺序决定了A和B的布局顺序,然后Common则在高地址,即公虚基类的布局放在D的尾部. 情况1: class A:public virtual Common{...}; class B:public virtual Common{...;virtual void NotInCommon()

《coredump问题原理探究》Linux x86版6.1节C++风格数据结构内存布局之无成员变量的类

在探究完C风格数据结构内存布局之后,接着探究C++风格数据结构内存布局. 虽然最简单的类是没有任何成员变量和成员函数,但由于没什么意义,不值得探究.在这里,就先探究一下没有任何成员变量和虚函数,只有成员函数的类. 先看一下例子: 1 #include <stdio.h> 2 class xuzhina_dump_c06_s1 3 { 4 public: 5 void hello() 6 { 7 printf( "hello\n" ); 8 } 9 void print()

C++ 对象的内存布局

http://blog.csdn.net/haoel/article/details/3081328 我们简单地复习一下,我们可以通过对象的地址来取得虚函数表的地址,如: typedef void(*Fun)(void); Base b; Fun pFun = NULL; cout << "虚函数表地址:" << (int*)(&b) << endl; cout << "虚函数表 — 第一个函数地址:" <