内存四区-堆区

内存四区-堆区

堆区:

   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 \n", tmp);//打印指针p1,p2所指向的内存空间的数据 
  system("pause");
  return 0;
}

运行结果:

 

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

 

posted on 2019-01-05 10:46 锋邢天下 阅读(...) 评论(...) 编辑 收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值