C++ 动态内存

ops/2024/9/23 2:26:54/

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/ops/33809.html

相关文章

20232803 2023-2024-2 《网络攻防实践》实践八报告

目录 1. 实践内容2. 实践过程2.1 动手实践任务一2.2 动手实践任务二&#xff1a;分析Crackme程序2.2.1 crackme1.exe2.2.2 crackme2.exe 2.3 分析实践任务一2.4 分析实践任务二 3. 学习中遇到的问题及解决4. 学习感悟、思考等 1. 实践内容 动手实践任务一&#xff1a;对提供的r…

ASP.NET网上车辆档案管理系统

摘 要 本文采用基于Web的Asp.net技术&#xff0c;并与sql server 2000数据库相结合&#xff0c;研发了一套车辆档案管理系统。该系统扩展性好&#xff0c;易于维护。简化了车辆档案设计流程&#xff0c;去除了冗余信息。汽车销售企业可以通过本系统完成整个销售及售后所有档案…

SQL常用语句与事务介绍

文章目录 基本语法常见用法实用语句事务 基本语法 SELECT&#xff1a;用于从数据库表中检索数据。 语法&#xff1a;SELECT column1, column2, ... FROM table_name;INSERT INTO&#xff1a;用于向数据库表中插入新行。 语法&#xff1a;INSERT INTO table_name (column1, col…

微信小程序开发中的网络请求和数据获取:从入门到实践

微信小程序开发中的网络请求和数据获取&#xff1a;从入门到实践 在微信小程序开发中&#xff0c;网络请求和数据获取是构建动态、交互式应用的关键环节。本文将深入探讨微信小程序的网络请求机制&#xff0c;并提供丰富的代码示例&#xff0c;帮助读者从零开始掌握这一重要技…

环形链表知识点

目录 判断链表中是否有环快慢指针步数问题 判断链表中是否有环 题目&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 解决方法&#xff1a;使用快慢指针 如果两个快慢指针相遇&#xff0c;则有环。 如果没有相遇&#xff0c;则没有环。 但是这个原理…

大学生上班族必备!九个线上兼职秘籍,让你远离失业风险

互联网时代&#xff0c;兼职新风尚&#xff1a;这些靠谱兼职让你轻松增收 随着互联网技术的飞速发展&#xff0c;兼职工作已成为许多人增加收入、提升自我能力的新选择。本文将为您揭秘一些适合大学生和上班族的靠谱兼职工作&#xff0c;助您轻松找到适合自己的兼职机会。 一…

Java学习之super VS this

在Java中&#xff0c;super和this关键字用于引用当前对象或父类对象的成员变量或方法。 一、super关键字&#xff1a; super关键字用于在子类中访问父类的成员变量或方法。使用super关键字调用父类构造方法。使用super关键字可以避免父类和子类中相同名称的变量或方法冲突。 …

TwinCAT3 实时内核调度算法

前言 TwinCAT3 支持多核心CPU并行运行实时任务&#xff0c;根据官方网站的帮助信息“实时”定义取自DIN44300&#xff0c;而且实时任务的调度算法默认是 RMS算法&#xff08;速率单调调度算法&#xff09; RMS算法 来看一下百度百科的解释&#xff1a; RMS&#xff08;单调速…