zoukankan      html  css  js  c++  java
  • C语言的内存管理

    1、C语言的内存结构

    内存地址位置 程序存储区域 子区域
    高地址 命令行参数区(命令行参数&环境变量)
    向下增长 栈区(内存空间有限,无需申请释放),存放局部变量
    向上增长 堆区(内存空间大,需要申请释放)
    ... 数据区 未初始化变量区(全局、静态)
    ... 数据区 已初始化变两区(全局、静态)
    ... 数据区 字符串常量区
    低地址 代码区 字符串常量区

    2、分配内存

    //分配内存
    TYPE *p = (TYPE *)malloc(num*sizeof(TYPE));
    memset(p, '', num*sizeof(TYPE));
    //分配内存(默认填充0)
    TYPE *p_array = (TYPE *)calloc(num, sizeof(TYPE));
    //调整内存分配
    TYPE *p1 = (TYPE *)malloc(num*sizeof(TYPE));
    TYPE *p2 = realloc(p1, 2*num*sizeof(TYPE));
    //释放内存
    free(p);
    

    3、测试

    #include <stdio.h>
    #include <memory.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct Person{
    	char name[20];
    	int age;
    }person;
    
    int main(void){
    	person *p = (person *)malloc(10*sizeof(person));
    	memset(p, 0, 10*sizeof(person));
    	for (int i=0; i<10; i++){
    		strcpy(p[i].name,"Tom");
    		p[i].age = i+100;
    	}
    	for (int i=0; i<10; i++){
    		printf("*****************************
    ");
    		printf("%s
    ",p[i].name);
    		printf("%d
    ",p[i].age);
    		person *pq;
    		pq = &p[i];
    		printf("%p
    ",pq);
    		printf("*****************************
    ");
    	}
    	free(p);
    	return 0;
    }
    

    a5ca68c4c6377241e0931addaa5d9bd0.png

  • 相关阅读:
    UVA-11437 Triangle Fun
    UVA 10491
    CF 223C
    poj 3273
    由异常掉电问题---谈xfs文件系统
    好久没有写博客了,最近一段时间做一下总结吧!
    Json.Net
    div 旋转
    VirtualBox虚拟机网络设置
    windows 2003 安装 MVC 环境 404错误,无法找到该页
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/11059319.html
Copyright © 2011-2022 走看看