windows和虚拟机ubuntu栈地址扩展的不同
来源:互联网 发布:广告过滤软件 编辑:程序博客网 时间:2024/06/01 03:57
#include <stdio.h>#include <stdlib.h>int main(){ char* p = "abcddddddddddddddddd"; //p为一个char指针,在stack区,"abc"在常量区, char* c1 = NULL; //c1在bss c1 = (char*)malloc(20*sizeof(char)); //给c1分配了20个char大小的空间 strcpy(c1,"hehehe"); //先在常量区分配一个"hehehe",然后拷贝到heap区 char c2[] = "eeeeeeeee11111"; //c2存放在stacK,因为其由系统分配 /*修改测试: //c1是自己分配的,在heap区,可以修改 //c2由系统分配,在stack区,可以修改 //p指向的是常量区,不能修改 c2[5] = 'c'; //ok c1[5] = 'c'; //ok p[5] = 'c'; //error */ printf("%X %X %s\n", &p, &("abcddddddddddddddddd"), p); printf("%X %X %s\n", &c1, c1, c1); printf("%X %X %s\n", &c2, c2, c2); printf("%X %X %s\n", &c2[5], c2[5], c2); /* p,c1,c2都在stack, "abcddddddddddddddddd"在常量区,c1存放的内容在heap区432CE28 D37888B4 abcddddddddddddddddd432CE30 D5693010 hehehe432CE39 432CE39 eeeeeeeee11111 */ return c1;}
运行结果:
ubuntu:
windows VS:
可以看出,ubuntu下面,栈的扩展方向从低地址到高地址,数组也是。
而window下,栈的扩展方向从高地址到低地址,数组从【0】到【n】是从低地址到高地址。
应该与编译器也有关系,详细的以后再检验吧。
阅读全文
0 0
- windows和虚拟机ubuntu栈地址扩展的不同
- 适用于 Windows 的虚拟机扩展和功能
- 适用于 Windows 的虚拟机扩展和功能
- 适用于 Windows 的虚拟机扩展和功能
- 适用于 Windows 的虚拟机扩展和功能
- 扩展Ubuntu虚拟机的硬盘空间
- ubuntu和windows下几种不同的修改Launcher的方法
- ubuntu和windows下几种不同的修改Launcher的方法
- VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?
- 虚拟机ubuntu设置和windows的共享文件夹
- VMware中ubuntu虚拟机与windows的端口映射,共享一个IP地址
- ubuntu虚拟机扩展硬盘
- 虚拟机Ubuntu扩展硬盘空间
- 修改虚拟机ubuntu的ip地址
- 虚拟机ubuntu和windows共享文件
- VMware下如何让ubuntu和windows系统共享文件(虚拟机中装的是ubuntu)
- 【原创】Ubuntu配置samba和windows共享文件(非虚拟机下的Ubuntu)
- 虚拟机ubuntu下挂载windows下的硬盘
- 学习使我快乐《二》--搭建自己的React脚手架
- Python——关于列表的更多特性
- PHP7打开Opcache,优化PHP7性能的几个设置
- Group Replication测试报告(2)
- Windows安装Keras
- windows和虚拟机ubuntu栈地址扩展的不同
- Android-获取view的宽高
- 图文并茂的sklearn PCA教程
- 编译原理中运算符的左结合和右结合
- [深度学习]Contractive Autoencoder
- 棋盘覆盖--分治法
- 真人秀
- 数组操作系列之去除空值与转换汉字
- maven项目配置redis,实现购物车功能