zoukankan      html  css  js  c++  java
  • 内存四区-堆区

    堆区:

       malloc的内存空间,new的内存空间都是放在堆中。  

    因为堆区内存空间的生命周期归操作系统管理,函数执行完后堆区对象不会被析构掉,也没有被程序员主动析构的话,可以在调用函数里使用该内存空间。

    用代码了解下堆区:

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>

    char * getMem(int num)
    {
      char *p1 = NULL;
      p1 = (char *)malloc(sizeof(char)*num);//申请num个char长度的内存空间 
      if(p1 == NULL)
      {
        return NULL;
      }
      return p1;
    }

    int main()
    {
      char *tmp = NULL;
      tmp = getMem(10); //tmp是局部变量,放在栈区,它指向申请到的这10个字节的内存空间。malloc申请的这段内存位于堆中 
      if(NULL == tmp) //相等判断最好把变量放到后面,因为如果把==错写成=的话会报错,如果你错写成 if(tmp = NULL) if条件是成立的。
      {
        return;
      }
      strcpy(tmp, "111222"); //向tmp指向的内存空间中copy数据,而不是向tmp中copy数据

      printf("%s ", tmp);//打印指针p1,p2所指向的内存空间的数据 
      system("pause");
      return 0;
    }

    运行结果:

    PS: 最好不要直接从博客中拷贝代码,会包含有中文空格,有的编译器会报错的。比如DevC++就会报错。

  • 相关阅读:
    Django----博客文章数据返回
    Django----admin模块初识
    Django搭建博客文章---模型层
    Js 提交 form 表单
    sql 查询 between and 和 >= <= 比较
    C# 未能加载项目文件
    不一样的 Null
    Js实现table单双行交替色
    C# 判断一个string型的时间格式是否正确
    利用 Label 小小的提升一下用户体验
  • 原文地址:https://www.cnblogs.com/fengxing999/p/10222733.html
Copyright © 2011-2022 走看看