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++就会报错。

  • 相关阅读:
    Linux Date命令学习笔记
    NOIP201401珠心算测验
    经典的背包问题
    简单动态规划---动态的数字三角形
    idea关于tab的设置
    idea设置字体大小
    C# 使用Queue<T>代替递归算法遍历树
    Python__用户交互,显示省市县三级联动的选择
    Python习题__购物车
    Python练习题
  • 原文地址:https://www.cnblogs.com/fengxing999/p/10222733.html
Copyright © 2011-2022 走看看