操作系统导论-课后作业-ch14

news2024/9/22 21:30:10

1.

代码如下:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *i = NULL;
    free(i);
    return  0;
}

执行结果如下:
在这里插入图片描述
可见,没有任何报错,执行完成。

2.

执行结果如下:
在这里插入图片描述

3.

valgrind安装使用参考:valgrind安装使用教程

运行结果如下:
在这里插入图片描述

4.

程序代码如下:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *i = malloc(sizeof(int));
    *i = 1;
    return  0;
}

直接运行结果如下;
在这里插入图片描述
gdb运行结果如下:
在这里插入图片描述
valgrind运行结果如下:
在这里插入图片描述
可以看到显示有4个字节的内存泄露。

5.

程序代码如下:

#include <stdlib.h>

int main() {
    int* arr = malloc(100 * sizeof(int));
    arr[100] = 0;
    return 0;
}

直接运行结果如下:
在这里插入图片描述
并没有报错
再valgrind中运行结果如下:
在这里插入图片描述
可发现报错:invalid write

6.

程序代码如下:

#include <stdlib.h>
#include <stdio.h>

int main() {
    int* arr = malloc(100 * sizeof(int));
    arr[1] = 10;
    free(arr);
    printf("the second element is %d\n", arr[1]);
    return 0;
}

直接运行结果如下:
在这里插入图片描述
程序依然运行,但是元素值却变了。
使用valgrind工具运行结果如下所示:
在这里插入图片描述
存在invalid read问题

7.

程序代码如下:

#include <stdlib.h>
#include <stdio.h>

int main() {
    int* arr = malloc(100 * sizeof(int));
    printf("%p, %p\n", arr, arr + 10);
    free(arr + 10);
    return 0;
}

直接运行结果如下:在这里插入图片描述
这种错误就不用工具栏,直接运行就能发现。\

8.

程序代码如下;

#include <stdlib.h>
#include <stdio.h>

typedef struct Arr {
    int size;
    int capacity;
    int* arr;
}* Vector;

Vector vec_create(int n) {
    Vector v = malloc(sizeof(struct Arr));
    v->size = 0;
    v->capacity = n;
    v->arr = (int*)malloc(sizeof(int) * n);
    return v;
}

void vec_pushback(Vector v, int num) {
    if (v->size == v->capacity) {
        // printf("realloc\n");
        v->capacity *= 2;
        v->arr = (int*)realloc(v->arr, v->capacity * sizeof(int));
    }
    // printf("push_back size = %d, capacity = %d, num = %d\n", v->size, v->capacity, num);
    v->arr[v->size] = num;
    v->size++;
}

void vec_destroy(Vector v) {
    free(v->arr);
    free(v);
}

void vec_print(Vector v) {
    int i;
    for (i = 0; i < v->size; ++i) {
        printf("the element %d is %d\n", i, v->arr[i]);
    }
}

int main() {
    Vector v = vec_create(1);
    vec_pushback(v, 1);
    vec_pushback(v, 2);
    vec_pushback(v, 3);
    vec_print(v);
    vec_destroy(v);
    return 0;
}

运行结果如下:
在这里插入图片描述
向量与链表相比:
vecor访问某个元素的时间复杂度是O(1),而list访问某个元素的时间复杂度是O(N);
插入和删除方面:vector的时间复杂度是O(N),而list的因为不需要搬移元素时间复杂度为O(1)。

9.

gdb学习(持续更新):gdb调试常用指令

valgrind学习(持续更新):valgrind安装使用教程

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

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

相关文章

决策树的基本构建流程

决策树的基本构建流程 决策树的本质是挖掘有效的分类规则&#xff0c;然后以树的形式呈现。 这里有两个重点&#xff1a; 有效的分类规则&#xff1b;树的形式。 有效的分类规则&#xff1a;叶子节点纯度越高越好&#xff0c;就像我们分红豆和黄豆一样&#xff0c;我们当然…

UI设计中的插画运用优势(下)

6. 插画赋予设计以美学价值&#xff0c;更容易被接受 即使所有人都在分析和争论产品的可用性和易用性&#xff0c;大家在对美的追求上&#xff0c;始终保持着一致的态度。一个设计是否具备可取性&#xff0c;是否能够通过甲方、客户和实际用户&#xff0c;是每个设计人都需要面…

微服务Spring Cloud架构详解

"Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具&#xff08;例如配置管理&#xff0c;服务发现&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线&#xff09;。分布式系统的协调导致了样板模式, 使用Spring Cloud开…

c++QT文件IO

1、QFileDialog文件对话框 与QMessageBox一样&#xff0c;QFileDialog也继承了QDialog类&#xff0c;直接使用静态成员函数弹窗。弹出的结果&#xff08;选择文件的路径&#xff09;通过返回值获取。 1&#xff09;获取一个打开或保存的文件路径 // 获取一个打开或保存的文件路…

快速上手的AI工具-文心辅助学习

前言 大家好晚上好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工…

MySQL>基础sql语句

阅读目录 1.进入数据库2.数据库操作&#xff08;增删改查用&#xff09;3.表操作(增删改查)4.语句操作(增删改查) 回到顶部 1.进入数据库 打开终端,输入&#xff1a; /usr/local/mysql/bin/mysql -uroot -p回车 输入密码&#xff1a; 回到顶部 2.数据库操作&#xff08;增…

FSCaptureSetup最新版下载与安装详细步骤,内附注册码

FSCaptureSetup FastStone Capture&#xff1a;功能强大且使用方便的截图软件一、使用方法二、常用功能 关注公众号&#xff1a;数据探索者007或扫描如下所示二维码回复07获取资源压缩包减压后如下所内容解压后按照如图所示操作进行安装 FastStone Capture&#xff1a;功能强大…

代码随想录算法训练营29期|day27 任务以及具体安排

39. 组合总和// 剪枝优化 class Solution {public List<List<Integer>> combinationSum(int[] candidates, int target) {List<List<Integer>> res new ArrayList<>();Arrays.sort(candidates); // 先进行排序backtracking(res, new ArrayList&…

ARM_Linux中GCC编译器的使用

目录 前言: GCC编译过程: 预处理&#xff1a; 编译阶段&#xff1a; 汇编&#xff1a; 链接阶段 GCC的常见使用 前言: 什么是GCC: gcc的全称是GNU Compiler Collection&#xff0c;它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器&#xff08;GNU C Co…

linux之安装配置VM+CentOS7+换源

文章目录 一、centos07安装二、CentOS 07网络配置2.1解决CentOS 07网络名不出现问题此博主的论文可以解决2.2配置&#xff08;命令: 【ip a】也可查看ip地址&#xff09; 三、使用链接工具链接CentOS进行命令控制四、换软件源 一、centos07安装 1、在vmvare中新建虚拟机 2、下…

charles mac抓包unknown问题

第一步&#xff1a;mac上安装Charles后&#xff0c;mac安装证书&#xff1a; 第二步&#xff1a;mac上信任证书 第三步&#xff1a;手机上安装证书 安装提示&#xff1a;电脑上通过help–>SSLProxying–> Install Charles Root Ceriticate on a Mobile Device or Remote …

微信小程序从入门到进阶(二)

数据请求 wx.request发起网络请求&#xff0c;请求的方式主要分为两种&#xff1a; get 请求 post 请求 // get请求 // html <view><button type"primary" bindtap"onGetClick">发起 get 请求</button> </view> // js // inde…

redis 入门及相关知识汇总

什么是 Redis &#xff1f; 1&#xff0c;相对于mysql &#xff0c;oracle &#xff0c; 这种关系西数据库&#xff0c; 我们还有非关系数据库服务&#xff0c;他的产生是为了&#xff0c;解决常规数据库的并发能力&#xff0c;传统的关系型数据库受限于IO 和性能瓶颈&#xff…

xshell可以远程登录服务器但是vscode一直显示让输入密码的解决方案

vscode报错 但是xshell可以登录 原因&#xff1a;可能因为我上一次没有恰当的退出远程链接导致的&#xff0c;我每次退出远程都是直接强制关闭VScode。 解决方法&#xff1a;打开VScode的 view &#xff08;查看&#xff09; palette&#xff08;命令面板&#xff09;然后输…

[AutoSar]BSW_OS 06 Autosar OS_Alarms

一、 目录 一、关键词平台说明一、Timer1.1 配置1.2Periodical Interrupt Timer (PIT)和High Resolution Timer (HRT) 二、Alarm 工作机制三、Code3.1创建一个15ms的runnable3.2mapping到basic task3.3生成代码 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueO…

还在用JS?过来看看GS

什么是GS&#xff1f;GS是我自创的一门编程语言&#xff0c;全名叫“GreatScript”&#xff0c;是一门类型化语言&#xff0c;可以编译成JavaScript。简单来说&#xff0c;就是又一门TypeScript。 GreatScript的生态位跟Typescript&#xff0c;CoffeeScript&#xff0c;ReScri…

ZigBee学习(一)

文章目录 一、ZigBee介绍二、IEEE 802.15.42.1 物理层2.2 MAC层2.3 如何实现网络和设备寻址2.4 能量管理 三、ZigBee网络拓扑结构四、ZigBee配置参数 一、ZigBee介绍 ZigBee是一种基于IEEE 802.15.4标准的高级通信协议&#xff0c;它被设计用于低速率、低功耗和短距离无线通信&…

带头 + 双向 + 循环链表增删查改实现

目录 源码&#xff1a; List.c文件&#xff1a; List.h文件&#xff1a; 简单的测试&#xff1a; 很简单&#xff0c;没什么好说的&#xff0c;直接上源码。 源码&#xff1a; List.c文件&#xff1a; #include"DLList.h"ListNode* creadNode(LTDataType x) {L…

自己重装Win10系统详细步骤教程

用户不喜欢自己电脑当前的操作系统&#xff0c;想自己重新一款喜欢的Win10系统&#xff0c;但不知道如何操作才能重新安装系统Win10&#xff1f;以下小编带来自己重装Win10系统详细步骤教程&#xff0c;帮助用户们轻轻松松地完成Win10系统的重装&#xff0c;快速体验Win10系统的…

2023.1.21 关于 Redis 主从复制详解

目录 引言 单点问题 分布式系统 主从模式 配置 Redis 主从结构 断开主从关系 切换主从关系 补充知识点一 只读 网络延迟 拓扑结构 一主一从 一主多从 树形主从结构 主从复制的基本流程 数据同步 replicationid offset pzync 运行流程 具体流程 补充知识点二…