C++动态内存

首先是C++的内存分配

1、动态内存即可操作的内存,为堆(heap),windows系统下限值为2G, new一定要用指针来接,因为返回的是地址

#define NUM 9
int *a = NULL;
//1、分配数组方式
a = new int [NUM];//动态申请内存,C++写法
a = (int *)malloc(sizeof(int) * NUM);//C语言写法,等同于上面
//malloc返回的类型是void*,需要强制类型转换

delete[] salary;//delete后的内存禁止访问
free(a);//C语言方式

//2、单个int方式
a = new int(2);

a = new int;//不赋初值

printf("%d", *a);

delete a;//不delete的话就是内存泄漏

2、栈区:编译器自动分配释放,存放函数的参数值、局部变量等,一般会有大小限制,一般是1M-2M

3、全局/静态区(static):全局变量和静态变量的存储是放在一起的,static变量定义在函数内多次调用只会初始化一次,static的访问权限只会在这个函数内部,很好的解决了全局变量访问权限的问题

4、文字常量区:存放常量字符串

char *p = "你好";
char *p1 = "你好";

printf("p:0x%p, p1: 0x%p", p, p1);//p和p1的地址相同,保存在文字常量区

5、程序代码区:存放函数替对应的二进制代码

内存拷贝函数

用于内存不够用的时候,申请一个新的内存,然后将内存完整的拷贝到另一个内存

#include<string.h>

void *memcpy(void *dest, const void *src, size_t n);//从源src的起始位置开始拷贝n个自己到目标dest所指内存的起始位置中

memcpy(dest, src, sizeof(src));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值