zoukankan      html  css  js  c++  java
  • 堆栈

    #include <stdio.h>
    #include <stdlib.h>
    
    int global_uninit_var;
    int global_init_var1 = 520;
    int global_init_var2 = 880;
    
    void func(void);
    
    void func(void)
    {
    	;
    }
    
    int main(void)
    {
    	int local_var1;
    	int local_var2;
    
    	static int static_uninit_var;
    	static int static_init_var = 456;
    
    	char *str1 = "I love FishC.com!";
    	char *str2 = "You are right!";
    
    	int *malloc_var = (int *)malloc(sizeof(int));
    
    	printf("addr of func -> %p
    ", func);
    	printf("addr of str1 -> %p
    ", str1);
    	printf("addr of str2 -> %p
    ", str2);
    	printf("addr of global_init_var1 -> %p
    ", &global_init_var1);
    	printf("addr of global_init_var2 -> %p
    ", &global_init_var2);
    	printf("addr of static_init_var -> %p
    ", &static_init_var);
    	printf("addr of static_uninit_var -> %p
    ", &static_uninit_var);
    	printf("addr of global_uninit_var -> %p
    ", &global_uninit_var);
    	printf("addr of malloc_var -> %p
    ", malloc_var);
    	printf("addr of local_var1 -> %p
    ", &local_var1);
    	printf("addr of local_var2 -> %p
    ", &local_var2);
    
    	return 0;
    }
    

    代码段:通常用来存放程序执行代码的内存区域

    数据段通常用来存放已经初始化的全局变量和局部静态变量

    bss段存放未初始化的全局变量的一块内存区域

    堆和栈的区别:

    堆由程序员手动申请 栈由系统自动分配

    堆由程序员手动释放,栈由系统自动释放

    #include <stdio.h>
    #include<stdlib.h> 
    int *func(){
    	int *ptr=NULL;
    	ptr=(int*)malloc(sizeof(int));
    	if(ptr==NULL){
    		exit(1);
    	}
    	*ptr=520;
    	return ptr;
    } 
    int main(void)
    {
    int *ptr=NULL;
    ptr=func();
    printf("%d",*ptr);
    free(ptr);
    
    	return 0;
    }

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    int main(){
    	int *ptr1=NULL;
    	int *ptr2=NULL;//栈局部变量 函数参数 函数返回值 
    	ptr1=(int*) malloc(sizeof(int));//堆中 
    	ptr2=(int*)malloc(sizeof(int));
    	printf("栈%p   %p
    ",&ptr1,&ptr2);
    	printf("堆%p    %p",ptr1,ptr2); 
    }
    
    #include <stdio.h>
    
    int main(void)
    {
    	char a = 0, b = 0;
    	int *p = (int *)&b;
    
    	*p = 258;
    
    	printf("%d %d
    ", a, b);
    
    	return 0;
    }
    

  • 相关阅读:
    迷你图标集大集合:5000+ 30套免费的图标(不得不下,设计必备)
    Github简介
    Sublime Text 3 文本编辑器
    FusionCharts V3图表导出图片和PDF属性说明(转)
    FusionCharts参数的详细说明和功能特性(转)
    SQL 数据结构操作语句
    SQL Server 2008 各种DateTime的取值范围
    Datagrid数据导出到excel文件的三种方法
    开发环境
    如何利用ThoughtWorks.QRCode 生成二维码
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/11163460.html
Copyright © 2011-2022 走看看