(学习日记)2024.01.27

news2024/11/16 9:44:50

写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。


标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。


点击此处进入学习日记的总目录

2024.01.27

  • 一、C/C++:malloc()——动态申请内存
  • 二、C/C++:calloc() ——动态申请内存
  • 三、C/C++:realloc()——内存空间修改

一、C/C++:malloc()——动态申请内存

函数使用通用数据库<stdlib.h>

原型为void *malloc(unsigned int num_bytes);
num_byte为要申请的空间大小,需要我们手动去计算,如int *p = (int *)malloc(20*sizeof(int))
如果编译器默认int为4字节存储的话,那么计算结果是80Byte,一次申请一个80Byte的连续空间,并将空间基地址强制转换为int类型,赋值给指针p,此时申请的内存值是不确定的

例程请参考本文章链表笔记——一个将所输入数字从小到大排序的程序题

二、C/C++:calloc() ——动态申请内存

函数使用通用数据库<stdlib.h>

原型为void *calloc(size_t n, size_t size);
其比malloc函数多一个参数,并不需要人为的计算空间的大小
比如果他要申请20个int类型空间,只需要int *p = (int *)calloc(20, sizeof(int))
这样就省去了人为空间计算的麻烦。

但这并不是他们之间最重要的区别,malloc申请后空间的值是随机的,并没有进行初始化
而calloc却在申请后,对空间逐一进行初始化,并设置值为0;
在这里插入图片描述
例程:

#include <stdio.h>
#include <stdlib.h>
//using namespace std;

int main()
{
    int* p = (int*)malloc(20 * sizeof(int));
    int* pp = (int*)calloc(20, sizeof(int));
    int i;

    printf("malloc申请的空间值:\n\n");
    for (i = 0; i < 20; i++)
    {
        printf("%d ", *p++);
    }
    printf("\n\n");
    printf("calloc申请的空间的值:\n\n");
    for (i = 0; i < 20; i++)
    {
        printf("%d ", *pp++);
    }
    printf("\n");
}

结果为:
在这里插入图片描述

三、C/C++:realloc()——内存空间修改

函数使用通用数据库<stdlib.h>

原型void realloc(void *ptr, size_t new_Size)
用于对动态内存进行扩容即已申请的动态空间不够使用,需要进行空间扩容操作
ptr为指向原来空间基址的指针, new_size为接下来需要扩充容量的大小。
在这里插入图片描述
例程:

#include <stdio.h>
#include <stdlib.h>
//using namespace std;

int main(void)
{
    const int size = 2000;
    int* p = (int*)malloc(20 * sizeof(int));
    int* pp = (int*)realloc(p, size * sizeof(int));

    printf("原来的p地址:\t%x\n扩容后的pp地址:\t%x \n\n", p, pp);

    return 0;
}

结果为:
在这里插入图片描述

参考链接:
calloc、malloc、realloc函数的区别及用法
关于内存分配malloc、calloc、realloc的区别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1421333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

行为型设计模式—迭代器模式

迭代器模式&#xff1a;也叫作游标模式&#xff0c;能在不暴露复杂数据结构内部细节的情况下遍历其中所有的元素。在迭代器的帮助下&#xff0c; 客户端可以用一个迭代器接口以相似的方式遍历不同集合中的元素。 当集合背后为复杂的数据结构&#xff0c;且希望对客户端隐藏其复…

漏洞原理文件上传漏洞

一 文件上传漏洞介绍&#xff08;理论&#xff09; 文件上传漏洞是一种常见的web应用程序漏洞&#xff0c;允许攻击者向服务器上传恶意文件。这种漏洞可在没有恰当的安全措施的情况下&#xff0c;将任意类型的文件上传到服务器上&#xff0c;从而可能导致以下安全问题&#xff…

【lesson1】高并发内存池项目介绍

文章目录 这个项目做的是什么&#xff1f;这个项目的要求的知识储备和难度&#xff1f;什么是内存池池化技术内存池内存池主要解决的问题malloc 这个项目做的是什么&#xff1f; 当前项目是实现一个高并发的内存池&#xff0c;他的原型是google的一个开源项目tcmalloc&#xf…

Python 字典及常见应用(Python Dctionary)

字典是python的内置基本数据类型之一&#xff0c;其他语言中可能会被称为“关联存储”或“关联数组”。它是一种映射关系&#xff0c;以包含在{}中的"键:值"对表示。字典是一种可变对象&#xff0c;键没有顺序。其主要用途是通过关键字存储、提取值。 目录 一、字典的…

3分钟搞定幻兽帕鲁联机,一键部署专属服务器

3分钟搞定幻兽帕鲁联机&#xff0c;一键部署专属服务器 访问帕鲁专题活动页 登录阿里云官网&#xff0c;用钉钉或者支付宝app扫码注册新用户&#xff08;新用户福利较多&#xff0c;优惠力度大&#xff09; 进入阿里云游戏联机服务器专题页&#xff0c;点击 一键购买及部署 即可…

记录一条sql查询:以逗号隔开的id字符串的查询

目录 前言表结构sql语句 前言 在一个项目中有两张表&#xff0c;一张是商品码表&#xff0c;一张是记录出库单明细的出库记录表&#xff0c;记录表中有一个字段保存了以逗号隔开的商品码表的id字符串&#xff0c;需要根据出库明细id查找到对应出库的商品码。 表结构 goods_det…

TypeScript(六) 循环语句

1. TypeScript循环语句 1.1. 简述 有的时候&#xff0c;我们可能需要多次执行同一块代码。一般情况下&#xff0c;语句是按顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。   循环语句允许我们多次执行一个语句或语句组…

【开源】JAVA+Vue.js实现大学兼职教师管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 学生教师管理3.3 课程管理模块3.4 授课管理模块3.5 课程考勤模块3.6 课程评价模块3.7 课程成绩模块3.8 可视化图表 四、免责说明 一、摘要 1.1 项目介绍 大学兼职教师管理系统&#xff0c;旨…

阿里云0基础1分钟搞定幻兽帕鲁游戏联机服务器搭建

幻兽帕鲁&#xff08;Palworld&#xff09;是一款备受欢迎的多人在线角色扮演游戏&#xff0c;让玩家可以与其他玩家一起探索、组队和战斗。为了能顺畅地体验游戏&#xff0c;搭建一个高效、稳定的游戏服务器至关重要。阿里云提供快速、简化的服务器搭建方案&#xff0c;新手小…

代码随想录 Leetcode112. 路径总和

题目&#xff1a; 代码(首刷看解析 2024年1月30日 递归回溯 逻辑清晰版&#xff09;&#xff1a; class Solution { public:bool traversal(TreeNode* cur,int sum) {if (!cur->left && !cur->right && sum 0) return true;if (!cur->left &&am…

iOS 17.4 苹果公司正在加倍投入人工智能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

开发AI软件,构建多用户AIGC系统,实现图文创作及源码交付

在AI技术不断进步的今天&#xff0c;AI软件开发已成为一个热门的领域。而多用户AIGC系统作为AI软件开发的重要项目之一&#xff0c;呈现出极大的潜力和前景。 多用户AIGC系统旨在为用户提供一个全面的图文创作平台&#xff0c;借助AI的力量&#xff0c;使创作过程更加智能化和…

代码随想录算法训练营DAY7 | 哈希表(2)

一、LeetCode 454 四数相加II 题目链接&#xff1a;454.四数相加IIhttps://leetcode.cn/problems/4sum-ii/description/ 思路&#xff1a;建立HashMap&#xff0c;Key存储nums1、nums2数对之和&#xff0c;Value存储数对和出现次数&#xff0c;再遍历nums3、nums4数对确定答案…

研学活动报名平台源码开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 研学活动报名平台旨在为活动组织者提供方便快捷的研学活动管理工具&#xff0c;同时为用户提供全面的活动搜索、报名和支付等功能。通过该系统&#xff0c;活动组织者能够更好地管理活动报名信息&#xff0c;用户也可…

【Lazy ORM 整合druid 实现mysql监控】

Lazy ORM 整合druid 实现mysql监控 JDK 17 Lazy ORM框架地址 up、up欢迎start、issues 当前项目案例地址 框架版本描述spring-boot3.0.7springboot框架wu-framework-web1.2.2-JDK17-SNAPSHOTweb容器Lazy -ORM1.2.2-JDK17-SNAPSHOTORMmysql-connector-j8.0.33mysql驱动druid-…

自动化测试接口测试前的【准备及思路】

1、什么是接口测试 客户端&#xff08;前端&#xff09;与服务端&#xff08;后端&#xff09;的关系&#xff0c;一般小编会理解为“服务端负责赚钱养家&#xff0c;客户端负责貌美如花”。客户端更注重的是功能呈现及用户体验&#xff0c;怎么将强大的功能精彩的界面呈现给不…

代码随想录算法训练营第35天 | 860.柠檬水找零 406.根据身高重建队列 452.用最少数量的箭引爆气球

柠檬水找零 局部最优&#xff1a;收到20元时优先找零10元5元&#xff0c;不够再找零3个5元&#xff0c;因为5元可以找零20和10&#xff0c;更有用。全局最优&#xff1a;完成所有的找零。 class Solution { public:bool lemonadeChange(vector<int>& bills) {int fi…

84 C++对象模型探索。数据语义学 - 继承多个类的时的数据布局问题。

此章节分析多继承问题&#xff0c;难点&#xff0c;但是非重点&#xff0c;实际开发中&#xff0c;多继承用的很少&#xff0c;容易被code review&#xff0c;可以不看。 我们要访问一个类对象中的成员 成员的定位是通过如下两个因素决定的&#xff1a;this指针(编译器会自动调…

数字身份保护:Web3如何改变个人隐私观念​

随着Web3时代的来临&#xff0c;数字身份保护成为人们关注的焦点之一。Web3技术的引入不仅为个人隐私带来了新的挑战&#xff0c;同时也为我们重新思考和改变个人隐私观念提供了契机。本文将深入探讨Web3如何改变个人隐私观念&#xff0c;以及在数字身份保护方面的创新举措。 1…

springboot中获取配置文件中属性值的几种方式

目录 第一章、使用Value注解第二章、使用PropertySource注解第三章、使用Configurationproperties注解第四章、使用Java Properties类第五章、使用Environment接口 友情提醒: 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接跳转到文章指定位置…