内存四区的笔记
来源:互联网 发布:网络侵权的类型 编辑:程序博客网 时间:2024/05/16 08:59
#include <stdio.h>#include <stdlib.h>#include <string.h>//静态存储区域的理解 char *getStr1(){char *p1 = "abcdef";return p1;}char *getStr2(){char *p2 = "abcdef";return p2;}//以上两个值如果都相等的话,那么他们公用一个内存空间 //结论:指针指向谁,就把谁的地址赋值给指针 void main(){char *p1 = NULL;char *p2 = NULL;p1 = getStr1();p2 = getStr2();//打印p1,p2所指向内存空间的数据 printf("p1:%s,p2:%s\n",p1,p2);//打印p1,p2的值printf("p1:%d,p2:%d\n",p1,p2); }
#include <stdio.h>#include <stdlib.h>#include <string.h>//堆 char *getMem(int num){char *p1 = NULL;p1 = (char *)malloc(sizeof(char) * num);//p1申请空间 ,永久存在,除非操作系统回收 if(p1 == NULL){return NULL;}return p1;//这里已经地址已经指向分配的堆空间 }//栈//注意:return不是把内存块的64个字节给return,出来,而是把内存块的首地址传给tmp//理解指针的关键,是在内存,没有内存哪来的指针 char *getMen2(){char buf[64]; //临时变量 strcpy(buf,"123456789");//printf("buf:%s\n",buf);return buf;//传地址的时候栈区自动析构掉,所以传过来没用 } void main(){char *tmp = NULL;tmp = getMem(10);if(tmp == NULL){return;}strcpy(tmp,"111222");tmp = getMen2(); printf("tmp:%s\n",tmp);system("pause");}
#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){int a;int b;char buf[128];//静态编译的时候 buf所代表的内存空间的标号 就已经定义下来了。 //不管栈开口向上还是向下,buf的内存buf+1永远都是向上的。 //栈的生长方向和buff的生长方向不是一回事 printf("&a:%d,&b:%d\n",&a,&b);//结论得出:B的内存地址比A小,那么证明栈的开口是向下的/* |----\ *| A \ *| B \ * | buff \ <-首地址 * |\ */ //但是也不一定,一般都是开口向下的 system("pause");//C++的编译器只会为每个程序建立一个内存四区 }
0 0
- 内存四区的笔记
- 内存四区笔记
- C笔记--内存四区
- 内存四区的理解
- 静态存储区的内存四区
- 内存四区与指针的分析
- new 和内存四区的 交情
- 01内存四区模型的引入
- C语言的内存四区
- 程序的内存四区模型
- 内存的管理(四)
- OC学习笔记四-2 内存管理(对象之间的内存管理)
- 内存四区解析
- 内存四区
- 关于内存四区
- 内存四区模型
- 内存四区
- 内存四区模型
- 获取百分数
- HBase Rowkey的散列与预分区设计
- codeforces 632C(字符串按字典序排列)
- zynq 7000 通过 ULPI 访问 usb phy 寄存器
- 数据类型的笔记
- 内存四区的笔记
- R基础(个人笔记)
- Java学习笔记之设计模式原则
- CMTime详解-AVFoundation视频操作必备基础
- JNI实现简单HelloWorld的Demo
- HashMap的实现原理
- 杂项
- 开发中碰到的问题:IllegalStateException: Can not perform this action after onSaveInstanceState
- 关于tesseract-ocr原理的几篇论文