C++ 动态内存

server/2024/10/21 23:26:04/

C程序的内存映射像
C程序中变量的内存分配方式
从静态存储区分配
全局变量和静态变量
在栈(stack)上创建
存放函数参数值,局部变量值等。
在执行函数调用时,系统在栈上为函数内的句柄变量及形参分配内存,函数执行结束时,自动释放这些内存。
在这里插入图片描述
C程序中变量的内存分配方式
从堆(heap)上分配
在程序运行期间,用动态内存分配函数来申请的内存都是从堆上分配的,动态内存的生存期由程序员自己来决定。
在这里插入图片描述
动态内存分配函数 动态内存分配函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
#define N 10000
int main()
{int *p,i=0;while(1){p=(int*)malloc(N*sizeof(int));printf("%p",p);*p=i++;if(p==NULL)break;}system("pause");return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
NULL指针
NULL是空指针。在C中,NULL取值为0,常常用以表示指针不指向任何地方的一种状态。
void*表示指针指向的目标对象无数据类型。
注意两者的区别。

C程序的内存映射
常见的内存错误
内存分配未成功进行使用
内存分配成功,但没有初始化即开始使用
内存分配成功并初始化,但发生越界使用
申请内存后没有及时释放内存
释放内存后仍继续使用

关于内存分配编程的建议原则
仅在需要时才使用malloc
malloc和free要配对使用,malloc在函数入口,free在函数出口使用malloc时要检查函数返回值,使用free函数后,将指针设置为NULL,不要把句柄变量的地址做为函数返回值返回。


http://www.ppmy.cn/server/30844.html

相关文章

Rust 字符串基本使用教程及代码演示

文章目录 一、基本使用教程1、字符串类型String&str 2、创建字符串创建String创建&str 3、字符串操作索引切片格式化字符串比较 4、字符串和集合5、字符串的错误处理6、参考链接 二、代码演示1、代码演示2、执行结果 一、基本使用教程 在Rust中&#xff0c;字符串是编…

数据结构与算法-单向环形链表与约瑟夫问题

1.简介 单向环形链表&#xff0c;闭合的形成一个环。 单向环形链表的一个应用场景是约瑟夫问题。 约瑟夫问题为&#xff1a;设编号为1&#xff0c;2&#xff0c;…&#xff0c;n的n个人围坐一圈&#xff0c;约定编号为k(1<k<n)的人从1开始报数&#xff0c;数到m的那个人…

mysql主从同步

在主服务器上 1.配置my.cnf [mysqld] log-binmysql-bin server-id1 #日志超过3天自动过期 expire_logs_days 30 #同步student库 binlog-do-dbstudent #不同步系统库 binlog-ignore-dbmysql #bin-log日志文件格式&#xff0c;设置为MIXED可以防止主键重复 binlog_formatmixed…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

linux安装MySQL 8.0笔记

在Linux系统中安装MySQL 8.0的详细操作步骤如下&#xff1a; 1. 添加MySQL Yum Repository 首先&#xff0c;您需要添加MySQL的Yum仓库。这可以通过下载并安装一个RPM包来实现&#xff0c;该RPM包会将MySQL仓库添加到您的仓库列表中。 wget https://repo.mysql.com//mysql80-c…

使用hutool工具导入excel Java

Hutool是一个Java工具类库&#xff0c;它提供了一系列实用的API&#xff0c;包括操作Excel的功能。要使用Hutool导入Excel&#xff0c;你可以使用ExcelReader类。以下是一个简单的例子&#xff0c;展示了如何使用Hutool导入Excel文件&#xff1a; import cn.hutool.poi.excel.…

[1702]java旅游资源网上填报系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java旅游资源网上填报系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

堆排序以及TOP-K问题

片头 嗨&#xff01;小伙伴们&#xff0c;大家好&#xff01;今天我们来深入理解堆这种数据结构&#xff0c;分析一下堆排序以及TOP-K问题&#xff0c;准备好了吗&#xff1f;我要开始咯&#xff01; 一、堆排序 这里我们先假设要排成升序&#xff0c;也就是从左到右&#xf…