当前位置: 首页 > news >正文

13-指针和动态内存-内存泄漏

一、视频笔记:

C语言通过malloc,来获取堆上的内存。

动态调用内存: malloc 和 free ;new 和 delete 都行。

内存泄漏指的是我们动态申请了内存,但是即是是使用完了之后(从来都不去释放它)。只会由不正确的动态内存(堆)的使用引起。

每个函数调用都对应一个栈帧。

任何未使用和未引用的堆上内存都是垃圾。

JAVA 和C+上,堆上的垃圾会被自动回收。

内存泄漏是不当的使用动态内存或内存的堆区,在一段时间内持续增长。

总是因为中,未使用或未引用的内存块才会发生。栈上的会自动回收,栈的大小固定,最多会栈溢出。

函数调用结束的时候,它的所有的局部变量都会被清除。

栈区:静态或全局变量——没有在函数内部声明,生命周期是整个程序的执行期间。一个区段是用来存放函数调用和局部变量的。

代码区、全局区、栈区是固定的在编译期间就决定了。

第四个区段称为堆或动态内存区:不是固定的,堆可以动态按需生长。

Srand(time(NULL));根据时间变化给出随机值。

二、测试代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h> // 包含字符串处理函数库
#include <math.h>
#include <time.h>int cash = 100;
void Play(int bet) {char* C = (char*)malloc(10000 * sizeof(char));C[0] = 'J'; C[1] = 'Q'; C[2] = 'K';printf("Shuffling...\n");srand(time(NULL));int i;for (i = 0; i < 5; i++){int x = rand() % 3;int y = rand() % 3;int temp = C[x];C[x] = C[y];C[y] = temp;}int playersGuess;printf("What't the position of queen - 1,2 or 3?");scanf_s("%d", &playersGuess);if (C[playersGuess - 1] == 'Q') {cash += 3 * bet;printf("You Win ! Result = \"%c %c %c\" Total Cash = $% d\n", C[0], C[1], C[2], cash);}else {cash -= bet;printf("You Loose ! Result = \"%c %c %c\" Total Cash = $% d\n", C[0], C[1], C[2], cash);}free(C);
}int main()
{int bet;printf("**Welcome to the Virtual Casion**\n\n");printf("Total cash = $%d\n", cash);while (cash > 0) {printf("What's your bet? $");scanf_s("%d", &bet);if (bet == 0 || bet > cash) break;Play(bet);printf("\n**********************\n");}
}

相关文章:

13-指针和动态内存-内存泄漏

一、视频笔记&#xff1a; C语言通过malloc&#xff0c;来获取堆上的内存。 动态调用内存&#xff1a; malloc 和 free &#xff1b;new 和 delete 都行。 内存泄漏指的是我们动态申请了内存&#xff0c;但是即是是使用完了之后&#xff08;从来都不去释放它&#xff09;。只…...

基于深度学习的视频摘要生成

基于深度学习的视频摘要生成是一种通过自动化方式从长视频中提取关键片段&#xff0c;生成简洁且有代表性的视频摘要的技术。其目的是在保留视频主要内容的基础上&#xff0c;大幅缩短视频的播放时长&#xff0c;方便用户快速理解视频的核心信息。以下是视频摘要生成的主要方法…...

适合初学者的[JAVA]: 基础面试题

目录 说明 前言 String/StringBuffer/StringBuilder区别 第一点: 第二点: 总结&#xff1a; 反射机制 JVM内存结构 运行时数据区域被划分为5个主要组件&#xff1a; 方法区&#xff08;Method Area&#xff09; 堆区&#xff08;Heap Area&#xff09; 栈区&#x…...

internal.KaptWithoutKotlincTask$KaptExecutionWorkAction 问题 ---Room数据库

Caused by: java.lang.Exception: No native library is found for os.nameMac and os.archaarch64. path/org/sqlite/native/Mac/aarch64 m3 目前使用的是MAC M3芯片的配置会出现这个问题。M1就应该就有这个问题 解决&#xff1a; 在project层级的build.gradle中的allprojec…...

Frequency-aware Feature Fusion for Dense Image Prediction 论文阅读

摘要:密集图像预测任务要求具有强类别信息和高分辨率精确空间边界细节的特征。为了实现这一点&#xff0c;现代分层模型通常利用特征融合&#xff0c;直接添加来自深层的上采样粗特征和来自较低层次的高分辨率特征。在本文中&#xff0c;我们观察到融合特征值在对象内的快速变化…...

Springboot + netty + rabbitmq + myBatis

目录 0.为什么用消息队列1.代码文件创建结构2.pom.xml文件3.三个配置文件开发和生产环境4.Rabbitmq 基础配置类 TtlQueueConfig5.建立netty服务器 rabbitmq消息生产者6.建立常规队列的消费者 Consumer7.建立死信队列的消费者 DeadLetterConsumer8.建立mapper.xml文件9.建立map…...

电磁兼容(EMC):整改案例(四)人体对EFT测试影响有多大?

目录 1. 异常现象 2. 原因分析 3. 整改方案 4. 总结 1. 异常现象 某产品按GB/T 17626.4标准进行电快速瞬变脉冲群测试&#xff0c;测试条件为&#xff1a;频率5kHz/100kHz&#xff0c;测试电压L&#xff0c;N线间2kV&#xff0c;L&#xff0c;N线对PE线4kV。测试过程中需要…...

数据可视化基础:让数据说话

一、引言 在信息洪流中&#xff0c;数据可视化如同灯塔&#xff0c;照亮了数据的海洋&#xff0c;让我们能够洞察数据背后的意 义。 下面是对数据可视化的详细介绍&#xff0c;包括定义、作用、类型、原则、工具方法以及应用场景&#xff0c; 并附上具体的代码示例。 二、数…...

有哪些优化数据库性能的方法?如何定位慢查询?数据库性能优化全攻略:从慢查询定位到高效提升

在现代应用程序开发中&#xff0c;数据库的性能对于整体系统的响应能力至关重要。随着用户数量的增加和数据量的增长&#xff0c;如何优化数据库性能、定位慢查询成了每一个开发者面临的重要挑战。今天&#xff0c;我想和大家分享一些实用的数据库性能优化方法&#xff0c;以及…...

C语言 | Leetcode C语言题解之第450题删除二叉搜索树中的节点

题目&#xff1a; 题解&#xff1a; struct TreeNode* deleteNode(struct TreeNode* root, int key){struct TreeNode *cur root, *curParent NULL;while (cur && cur->val ! key) {curParent cur;if (cur->val > key) {cur cur->left;} else {cur c…...

智慧防灾,科技先行:EasyCVR平台助力地质灾害视频监测系统建设

随着科技的飞速发展&#xff0c;视频监控技术已成为地质灾害监测与预警的重要手段之一。在众多视频监控平台中&#xff0c;EasyCVR视频汇聚平台凭借其强大的视频整合、实时传输、视频处理及分发等能力&#xff0c;在地质灾害场景中展现出显著的应用优势。 一、实时监测与远程监…...

掌握C#核心概念:类、继承、泛型等

C# 是一门功能强大且灵活的面向对象编程语言&#xff0c;它结合了许多现代编程语言的特点和特性。无论你是编程新手&#xff0c;还是有经验的开发者&#xff0c;理解C#中的核心概念都是非常重要的。本文将介绍C#中的类与对象、构造函数和析构函数、方法的重载与重写、继承与多态…...

[VULFOCUS刷题]tomcat-pass-getshell 弱口令

tomcat-pass-getshell 弱口令 启动容器&#xff0c;打开网站 点开manageapp&#xff0c;输入弱口令 tomcat/tomcat 之后在下面上传jsp大马&#xff0c;首先生成一个jsp马 这里我直接使用github别人生成好的 tennc/webshell: This is a webshell open source project (github.…...

golang rpc

RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;简单的理解是一个节点请求另一个节点提供的服务&#xff0c;对应rpc的是本地过程调用&#xff0c;函数调用是最常用的本地过程调用&#xff0c;将本地过程调用变成远程调用会面临着各种问题。 以两数…...

A Learning-Based Approach to Static Program Slicing —— 论文笔记

A Learning-Based Approach to Static Program Slicing OOPLSA’2024 文章目录 A Learning-Based Approach to Static Program Slicing1. Abstract2. Motivation(1) 为什么需要能处理不完整代码(2) 现有方法局限性(3) 验证局限性: 初步实验研究实验设计何为不完整代码实验结果…...

掌握 C# 中的委托与事件机制

C# 中的委托和事件为开发者提供了处理回调、异步编程以及发布订阅模式的强大工具。委托与事件机制在实际应用中非常常见&#xff0c;特别是在事件驱动编程和 GUI 应用中。本文将带你深入理解委托的定义、匿名方法、Lambda 表达式、事件机制以及多播委托的使用。 1. 委托&#x…...

使用微服务Spring Cloud集成Kafka实现异步通信(消费者)

1、本文架构 本文目标是使用微服务Spring Cloud集成Kafka实现异步通信。其中Kafka Server部署在Ubuntu虚拟机上&#xff0c;微服务部署在Windows 11系统上&#xff0c;Kafka Producer微服务和Kafka Consumer微服务分别注册到Eureka注册中心。Kafka Producer和Kafka Consumer之…...

docker pull 超时Timeout失败的解决办法

当国内开发者docker pull遇到如下提示时&#xff0c;不要惊讶 [rootvm /]# docker pull postgres Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 128.121.146.235:443: i/o timeout [rootvm /]# 自2024…...

YOLOv7改进之主干DAMOYOLO结构,结合 CReToNeXt 结构,打造高性能检测器

一、DAMOYOLO理论部分 论文地址:2211.15444 (arxiv.org) 在本报告中,我们提出了一种快速准确的对象检测方法,称为 DAMO-YOLO,它实现了比最先进的 YOLO 系列更高的性能。DAMO-YOLO 是从 YOLO 扩展而来的,具有一些新技术,包括神经架构搜索 (NAS)、高效的重新参数化广义 …...

进度条(倒计时)Linux

\r回车(回到当前行开头) \n换行 行缓冲区概念 什么现象&#xff1f; 什么现象&#xff1f;&#xff1f; 什么现象&#xff1f;&#xff1f;&#xff1f; 自己总结&#xff1a; #pragma once 防止头文件被重复包含 倒计时 在main.c中&#xff0c;windows.h是不可以用的&…...

3大突破!AnythingLLM让多格式文档处理效率提升10倍

3大突破&#xff01;AnythingLLM让多格式文档处理效率提升10倍 【免费下载链接】anything-llm 这是一个全栈应用程序&#xff0c;可以将任何文档、资源&#xff08;如网址链接、音频、视频&#xff09;或内容片段转换为上下文&#xff0c;以便任何大语言模型&#xff08;LLM&am…...

保姆级教程:手把手教你用Xinference-v1.17.1在Jupyter里玩转开源大模型

保姆级教程&#xff1a;手把手教你用Xinference-v1.17.1在Jupyter里玩转开源大模型 1. 为什么选择Xinference&#xff1f; 1.1 什么是Xinference&#xff1f; Xinference&#xff08;Xorbits Inference&#xff09;是一个开源平台&#xff0c;它让运行各种AI模型变得像调用P…...

开发者必备:OpenClaw+Qwen3-32B镜像调试Python脚本全攻略

开发者必备&#xff1a;OpenClawQwen3-32B镜像调试Python脚本全攻略 1. 为什么选择OpenClawQwen3-32B组合&#xff1f; 去年冬天调试一个图像处理项目时&#xff0c;我每天要反复执行十几个Python脚本&#xff0c;手动检查日志、截图比对结果。直到发现OpenClaw这个"数字…...

突破语言壁垒:XUnity.AutoTranslator让Unity游戏翻译不再复杂

突破语言壁垒&#xff1a;XUnity.AutoTranslator让Unity游戏翻译不再复杂 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 一、游戏语言困境&#xff1a;玩家面临的真实挑战 想象一下&#xff0c;你终于等…...

MT5 Zero-Shot中文数据增强部署指南:Docker Hub官方镜像使用规范说明

MT5 Zero-Shot中文数据增强部署指南&#xff1a;Docker Hub官方镜像使用规范说明 1. 引言 你有没有遇到过这样的烦恼&#xff1f;手头的中文文本数据太少了&#xff0c;想训练一个模型&#xff0c;却发现数据量根本不够。或者&#xff0c;你有一批文案&#xff0c;想快速生成…...

基于Session管理的在线视频学习平台防作弊策略

1. Session管理在在线学习平台中的核心作用 在线视频学习平台最头疼的问题之一&#xff0c;就是如何防止用户通过多设备同时登录来刷学习进度。想象一下&#xff0c;如果用户同时在手机、平板和电脑上登录同一个账号&#xff0c;三倍速刷完课程&#xff0c;这对其他认真学习的用…...

SAP PP MRP再计划配置详解:从工厂日历到容差设置,手把手教你避开计划混乱

SAP PP MRP再计划配置实战指南&#xff1a;精准控制生产排程的关键参数 在制造业的日常运营中&#xff0c;生产计划的有效性直接关系到交付准时率和库存周转效率。作为SAP PP模块的核心功能之一&#xff0c;MRP&#xff08;物料需求计划&#xff09;的再计划机制扮演着"计…...

聊天记录全方位管理:WeChatMsg革新性本地数据解决方案

聊天记录全方位管理&#xff1a;WeChatMsg革新性本地数据解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

Ice终极指南:3步打造Mac菜单栏的清爽工作空间

Ice终极指南&#xff1a;3步打造Mac菜单栏的清爽工作空间 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice Ice是一款专为macOS设计的强大菜单栏管理器&#xff0c;能够帮助用户有效整理和优化混乱的菜…...

2026年GPT-5.4实战应用完全指南

2026 年 3 月 OpenAI 发布的 GPT-5.4&#xff0c;是 AI 从对话工具转向自动化执行代理的里程碑产品&#xff0c;凭借原生计算机操控、百万 Token 上下文、Excel 深度集成、强推理编程四大核心突破&#xff0c;覆盖企业、专家、讲师、管理者、主播、电商、小白七类人群&#xff…...