C++:动态内存相关知识点整理:

news/2024/11/15 6:17:43/

动态内存:

#include<stdlib.h>

前提引入:

  • 局部变量储存在 空间vs2022 内分配 (1024*1024)=1m 大小超过此大小程序崩溃
  • char* s = strtok(buff, " ");//当指针定义在外部函数时,为函数内部的局部变量,函数结束时会结束生命周期,即使return *指针,也无法实现返回内容,则适用于使用动态申请定义指针,则在free()前可以全局使用
  • 动态内存储存在 空间,分配较大内存,适用于定义大容量(1G左右)
  • 动态内存申请连续内存

malloc

参数:只需要申请空间的大小 n

(void*)malloc( n * sizeof(--) );

内存充裕时,返回申请成功的指针,否则返回NULL (assert 断言不为NULL);

calloc

(void*)calloc( n , sizeof(--) );

对比malloc 没有默认值,而calloc 申请的内容,指针指向默认初始值都为0

memset(指针,0,字节总数);//重新初始化全部为0

扩容:realloc

malloc\calloc 申请内存不够使用时,再次申请扩大需要的内存

(void*)realloc( 原申请指针 , size(更大的总内存字节大小) );

size:需要分配的总内存大小,不是重新添加的大小

返回值:!!接受新的申请地址

free:

释放申请的内存,否则出现内存泄漏(申请后未使用、未释放,导致其他程序无法使用)

泄露的内存回收

  • 在程序(进程)结束后回收
  • 关机(重启)

内存泄漏非常严重的错误:难发现、难修改

  • #include<vld.h> 在内存泄漏时报告,需要插件 /桌面/学习/C/vld

free() 导致程序崩溃是为什么?

  1. 写入内容超过申请内存大小:越界;
  2. 使用过程,申请的返回指针使用时移动    eg: P++;作为数组使用P[i++],无影响
  3. 重复释放同一内存,free两次

const

作用 :

        定义常量(不能修改,不能改写).

        例如 const int ca = 10; ca=20;//error

特点:

  • 基本类型对于const透明.    例如 int double char......

        const int ca = 10; 等价 int const ca = 10;

  • const限定它的"直接"右边

  1. const int *p; 类型可自动忽略,只限定” *单独则代表指针解引用->值 不可变
  2. int * const p; 类型可自动忽略,只限定 ”  单独则代表指针地址   ->地址 不可变

  • 其主要应用场景:如果形参是指针,同时不允许修改实参的值,那么在指针前面加const

  • 权限在传递时可以同等传递,也可以缩小传递,但不能扩大 ->我可读,传递给他人也仅可读,他人不可写(权力放大)

http://www.ppmy.cn/news/1375414.html

相关文章

第十五届蓝桥杯第三期模拟赛(Java)

1. 【问题描述】 请问 2023 有多少个约数&#xff1f;即有多少个正整数&#xff0c;使得 2023 是这个正整数的整数倍。 【答案提交】 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一个整数&#xff0c;在提交答案时只填写这个整数&#xff0c;…

【C++】设计模式:建造者、原型、单例

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍设计模式&#xff1a;建造者、原型、单例。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xf…

cocos creator 3.7.2使用shader实现图片扫光特效

简介 功能&#xff1a;图片实现扫光效果 引擎&#xff1a;cocos Creator 3.7.2 开发语言&#xff1a;ts 完整版链接 链接https://lengmo714.top/284d90f4.html 效果图 shader代码 // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd. CCEffect %{techniques:- pas…

Facebook商城号为什么被封?防封养号技巧

由于Facebook商城的高利润空间&#xff0c;越来越多的跨境电商商家注意到它的存在。Facebook作为全球最大、用户量最大的社媒平台&#xff0c;同时也孕育了一个巨大的商业生态&#xff0c;包括广告投放、商城交易等。依托背后的大流量&#xff0c;Facebook商城起号较快&#xf…

二叉树的层序遍历 (层次遍历 广度优先遍历)(14.7版)

function.h文件&#xff1a; // // Created by legion on 2024/3/5. //#ifndef INC_14_4_TREE_FUNCTION_H #define INC_14_4_TREE_FUNCTION_H #include <stdio.h> #include <stdlib.h>typedef char BiElemType; typedef struct BiTNode{BiElemType c;struct BiTNo…

代码随想录刷题笔记-Day31

1. 最大子序和 53. 最大子数组和https://leetcode.cn/problems/maximum-subarray/ 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组&#xff1a;是数组中的一个连续…

数据要素“摸家底”:是什么?为什么?怎么做?

继经济数据“摸家底”之后&#xff0c;全国数据资源也迎来一次“大摸底”。2月19日&#xff0c;国家数据局等四部门发布《关于开展全国数据资源调查的通知》&#xff0c;提出“摸清数据资源底数”&#xff0c;为相关政策制定、试点示范等工作提供数据支持。如此大规模数据资源调…

提取pdf图档中的物料编码

一、摘要 图1 图档示例 本篇代码目的是从指定文件夹下的PDF文件中提取物料编码等相关信息&#xff0c;并将这些信息存储在列表中输出。这段代码主要实现了以下功能&#xff1a; 定义一个file_name函数&#xff0c;用于获取指定文件夹下所有文件的完整路径。通过遍历文件夹和子文…