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

常用函数的使用错题汇总

目录

  • new/delete malloc/free
      • 1. 语言和类型
      • 2. 内存分配
      • 3. 内存释放
      • 4. 安全性和类型安全
      • 5. 其他特性
      • 总结
  • 线程停止
  • 文件流

new/delete malloc/free

在这里插入图片描述
在这里插入图片描述
malloc/freenew/delete 是 C/C++ 中用于动态内存管理的两种方式,它们有一些重要的区别。以下是这两种方式的比较:

1. 语言和类型

  • malloc/free:

    • 属于 C 语言的内存管理函数。
    • malloc 返回的是 void* 类型的指针,调用者需要进行类型转换。
    • 不会调用构造函数或析构函数,适用于简单的内存分配。
  • new/delete:

    • 属于 C++ 的内存管理操作符。
    • new 返回的是所请求类型的指针,不需要进行类型转换。
    • 会自动调用构造函数(new)和析构函数(delete),适用于复杂的对象和类。

2. 内存分配

  • malloc:

    • 语法:void* malloc(size_t size);
    • 分配 size 字节的内存块。
    • 如果分配失败,返回 NULL
  • new:

    • 语法:Type* ptr = new Type;
    • 分配足够的内存来存储一个 Type 类型的对象,并调用其构造函数。
    • 如果分配失败,抛出 std::bad_alloc 异常。

3. 内存释放

  • free:

    • 语法:void free(void* ptr);
    • 释放由 malloccallocrealloc 分配的内存。
    • 不会调用析构函数。
  • delete:

    • 语法:delete ptr;
    • 释放由 new 分配的内存,并调用相应对象的析构函数。
    • 可以使用 delete[] 来释放由 new[] 分配的数组。

4. 安全性和类型安全

  • 类型安全

    • newdelete 是类型安全的,编译器会根据类型检查指针的类型。
    • mallocfree 不提供类型安全,使用时需要手动转换类型。
  • 内存泄漏

    • 使用 newdelete 更容易避免内存泄漏,因为它们会自动调用对象的构造和析构函数,确保资源的正确管理。
    • 使用 mallocfree,开发者需要手动管理对象的生命周期,容易出现内存泄漏。

5. 其他特性

  • mallocfree 不能用于分配和释放 C++ 对象的数组,使用时不调用构造函数和析构函数,可能导致资源管理不当。
  • newdelete 可以配合异常处理机制,允许在分配失败时抛出异常,提供了更好的错误处理模型。

总结

  • 在 C++ 中,推荐使用 newdelete 来进行动态内存管理,以充分利用对象的构造和析构功能以及类型安全的优势。
  • mallocfree 适用于 C 语言或需要与 C 兼容的代码,但在 C++ 中使用时要谨慎,确保适当地管理对象的生命周期。

线程停止

在这里插入图片描述

文件流

在这里插入图片描述

#include <iostream>
#include <fstream>
#include <string>int main() {std::ifstream fin("example.txt"); // 创建 ifstream 对象并打开文件// 检查文件是否成功打开if (!fin) {std::cerr << "Error opening file!" << std::endl;return 1; // 返回错误代码}std::string line;// 逐行读取文件内容while (std::getline(fin, line)) {std::cout << line << std::endl; // 输出读取的每一行}fin.close(); // 关闭文件return 0; // 正常结束程序
}

文件输入输出流

相关文章:

常用函数的使用错题汇总

目录 new/delete malloc/free1. 语言和类型2. 内存分配3. 内存释放4. 安全性和类型安全5. 其他特性总结 线程停止文件流 new/delete malloc/free malloc/free 和 new/delete 是 C/C 中用于动态内存管理的两种方式&#xff0c;它们有一些重要的区别。以下是这两种方式的比较&…...

uniapp手机端一些坑记录

关于 z-paging-x 组件&#xff0c;在ios上有时候通过弹窗去粗发它reload时会触发闪退&#xff0c;可能是弹框插入进去导致的DOM 元素已经被移除或者不可用&#xff0c;解决办法是加上他自带属性 :showRefresherWhenReload"true" 加上showRefresherWhe…...

2024学习之前端微信小程序开发教程,从入门到精通-含基础+实战+源码code

目录 一、简单介绍 二、课程需知 三、内容编排 1、小程序基础  起步式 目录结构 小程序框架 场景值  逻辑层 视图层 组件 视图容器 基础内容 表单组件 导航 媒体组件 Api 路由 界面 交互 网络 数据缓存 自定义组件 2、项目实战 …...

netconf 代码架构

NETCONF&#xff08;Network Configuration Protocol&#xff09;是一种基于 XML 的网络配置管理协议&#xff0c;主要用于在网络设备之间进行配置管理、状态监控和操作。它被设计为一种可扩展的协议&#xff0c;并且在自动化网络管理中扮演着重要角色。NETCONF 通过安全的通信…...

蒙特卡洛方法(Monte Carlo,MC)

目录 1 序言 2 Monte Carlo法计算积分 3 最优化计算Monte Carlo法 1 序言 蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的&#xff0c;“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场&#xff0c;这个方法是一类基于概率的方法的统称。是一种应用随机数来进行…...

python学习笔记8-函数2

参数传递 传不可变对象 & 传可变对象 def func(b):print(id(a), a) #140737041872600 234print(id(b), b) #140737041872600 234a 234 func(a)def func(b):print(id(a), a) #1413554098560 [343]print(id(b), b) #1413554098560 [343]a [343] func(a)def func(b):b.appe…...

电商项目高级篇06-缓存

电商项目高级篇06-缓存 1、docker下启动redis2、项目整合redis3、redis改造三级分类业务 缓存 流程图&#xff1a; data cache.load(id);//从缓存加载数据 If(data null){ data db.load(id);//从数据库加载数据 cache.put(id,data);//保存到 cache 中 } return data;在我们…...

使用 `aircrack-ng`扫描、获取握手包

使用 aircrack-ng 工具集来扫描 5GHz WiFi 网络的过程与扫描 2.4GHz 网络类似&#xff0c;但需要注意一些特定的配置和命令。以下是一个详细的步骤指南&#xff0c;帮助你在 5GHz 频段上扫描 WiFi 网络并捕获握手包。 ### 前提条件 1. **操作系统**&#xff1a;通常在 Linux 系…...

基于大数据python 酒店数据分析可视化大屏系统(源码+LW+部署讲解+数据库+ppt)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度&#xff08;部分学校只有一次答辩机会 没弄好就延迟…...

uniapp中父组件调用子组件方法

实现过程&#xff08;setup语法糖形式下&#xff09; 在子组件完成方法逻辑&#xff0c;并封装。在子组件中使用defineExpose暴露子组件的该方法。在父组件完成子组件ref的绑定。通过ref调用子组件暴露的方法。 子组件示例 <template> </template><script se…...

STL算法之set相关算法

STL一共提供了四种与set(集合)相关的算法&#xff0c;分别是并集(union)、交集(intersection)、差集(difference)、对称差集(symmetric difference)。 目录 set_union set_itersection set_difference set_symmetric_difference 所谓set&#xff0c;可细分为数学上定义的和…...

vscode中json文件的注释飘红

vscode的json文件 添加注释&#xff0c;提示json中不允许有注释&#xff0c;点编辑器最下面的json&#xff0c;如下图 然后选择如上图的json with comments就好了...

【微服务】SpringBoot 整合Redis Stack 构建本地向量数据库相似性查询

目录 一、前言 二、向量数据库介绍 2.1 什么是向量数据库 2.2 向量数据库特点 2.3 向量数据库使用场景 三、常用的向量数据库解决方案 3.1 Milvus 3.1.1 Milvus是什么 3.1.2 Milvus主要特点 3.2 Faiss 3.2.1 Faiss是什么 3.2.2 Faiss主要特点 3.3 Pinecone 3.3.1 …...

三:安装服务-controller node

一&#xff1a;工具、环境准备-controller node 二&#xff1a;OpenStack环境准备-controller node 三&#xff1a;安装服务-controller node 四&#xff1a;工具、环境准备-compute node 五&#xff1a;OpenStack环境准备-compute node 六&#xff1a;安装服务-compute node 七…...

自定义类型: 结构体、枚举 、联合

目录 结构体 结构体类型的声明 匿名结构体 结构的自引用 结构体变量的定义和初始化 结构体成员变量的访问 结构体内存对齐 结构体传参 位段 位段类型的声明 位段的内存分配 位段的跨平台问题 位段的应用 枚举 枚举类型的定义 枚举的优点 联合体(共用体) 联合…...

Bert+CRF的NER实战

CRF&#xff08;条件随机场-Conditional Random Field&#xff09; 原始本文&#xff1a;我在北京吃炸酱面 标注示例&#xff1a; 我O在O北B-PLA京I-PLA吃O炸B-FOOD酱I-FOOD面I-FOOD CRF&#xff1a; 目的&#xff1a;提出一些不可能出现的预测组合&#xff08;例如I-PLA不能…...

永久停用PostgreSQL 归档功能

文章目录 引言永久停用归档功能归档的优势归档的劣势开启归档的情况关闭归档的情况see also引言 PostgreSQL 是一个开源的关系型数据库系统,支持数据归档(WAL),可以实现数据备份、恢复和灾难恢复等功能。在使用 PostgreSQL 的过程中,如果 PostgreSQL 数据库开启了归档(a…...

《数字图像处理基础》学习07-图像几何变换之最近邻插值法放大图像

目录 一&#xff0c;概念 二&#xff0c;题目及matlab实现 1&#xff0c;解题思路 2&#xff0c;matlab实现 1&#xff09;matlab思路 2&#xff09;完整代码 三&#xff0c;放大图像及matlab实现 一&#xff0c;概念 通过上一篇&#xff0c;我已经学习了使用最邻近插…...

pip安装库时报错(请求超时)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

XPath表达式详解及其在Web开发中的应用

XPath&#xff08;XML Path Language&#xff09;是一种强大的查询语言&#xff0c;用于在XML文档中选择节点。由于HTML可以被视为一种特殊的XML&#xff0c;因此XPath同样适用于HTML文档。XPath允许开发者通过元素的层级结构和属性来选择节点或节点集合&#xff0c;这使得它成…...

Java——继承实现的基本原理

继承实现的基本原理1、示例2、类加载过程3、对象创建的过程4、方法调用的过程5、变量访问的过程6、继承是把双刃剑6.1、继承破坏封装6.2、封装是如何被破坏的6.3、继承没有反映is-a关系6.4、如何应对继承的双面性1、示例 Base类&#xff1a; public class Base {public stati…...

LinkSwift:九大网盘直链下载,告别限速烦恼

LinkSwift&#xff1a;九大网盘直链下载&#xff0c;告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

TikTok评论采集终极指南:5分钟学会免费批量提取用户评论

TikTok评论采集终极指南&#xff1a;5分钟学会免费批量提取用户评论 【免费下载链接】TikTokCommentScraper 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokCommentScraper 想要快速获取TikTok视频下的所有用户评论进行数据分析&#xff1f;TikTokCommentScraper…...

Gradle多模块项目实战:从settings.gradle配置到自定义目录结构的完整指南

Gradle多模块项目实战&#xff1a;从settings.gradle配置到自定义目录结构的完整指南 当你的代码库从单体应用演化为包含数十个服务的分布式系统时&#xff0c;项目结构的复杂度会呈指数级增长。我曾见证过一个电商平台在三年内从单一代码库裂变为包含38个微服务的迷宫——开发…...

OpenCore Legacy Patcher终极指南:五步让老Mac重获新生

OpenCore Legacy Patcher终极指南&#xff1a;五步让老Mac重获新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在为手中的老旧Mac无法升级到最新…...

TI毫米波雷达IWR1642数据采集实战:从mmWave Studio参数设置到16MB bin文件大小计算全解析

TI毫米波雷达IWR1642数据采集实战&#xff1a;从mmWave Studio参数设置到16MB bin文件大小计算全解析 毫米波雷达在自动驾驶、工业检测等领域的应用日益广泛&#xff0c;而TI的IWR1642作为一款高性价比的毫米波雷达传感器&#xff0c;其数据采集过程却常常让开发者感到困惑。特…...

如何5分钟完成高质量AI语音转文字:免费音频转录神器终极指南

如何5分钟完成高质量AI语音转文字&#xff1a;免费音频转录神器终极指南 【免费下载链接】faster-whisper-GUI faster_whisper GUI with PySide6 项目地址: https://gitcode.com/gh_mirrors/fa/faster-whisper-GUI 还在为会议录音整理而烦恼吗&#xff1f;还在为视频字幕…...

基于Playwright与技能化架构的多平台内容自动发布系统实践

1. 项目概述与核心价值最近在折腾一个挺有意思的东西&#xff0c;一个叫“multi-post”的开源项目。简单来说&#xff0c;这玩意儿能让你写一套脚本&#xff0c;然后自动把内容同步发布到多个不同的社交媒体平台上。听起来是不是有点像市面上那些付费的社交媒体管理工具&#x…...

Sunshine游戏串流服务器:三步搭建你的跨设备游戏平台

Sunshine游戏串流服务器&#xff1a;三步搭建你的跨设备游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器&#xff0c;专为Moonl…...

Python开发者必备:高效获取whl包的三种实战路径

1. 为什么我们需要whl包&#xff1f; 作为Python开发者&#xff0c;你一定遇到过这样的场景&#xff1a;兴冲冲地pip install某个包&#xff0c;结果等待你的是一连串红色报错。最常见的就是"Microsoft Visual C 14.0 is required"这类编译错误。这时候&#xff0c;w…...