C++内存检查工具valgrind入门案例
(更新中……)概述本文通过一些简单案例来介绍如何使用valgrind对C++程序进行内存检测。
valgrind的安装和使用valgrind只能在Linux系统上安装运行,windows用户可以在wsl系统中安装valgrind。具体方法见另一篇文章:C++在windows下安装wsl和c++编译工具。
使用方法:
12345678// 编译时带-g参数以包含debug信息:g++ -g test.cpp -o test.exe// 使用valgrind启动exe文件:(默认参数 --tool=memcheck 可省略)valgrind ./test.exe// 查看所有指令valgrind --help
test.cpp
123456789101112131415161718#include <iostream>#include <string>using namespace std;struct Text{ Text(string in):_data(in){} void print(){ ...
C++在windows下安装wsl和c++编译工具
概述本文介绍如何在windows中使用wsl系统实现Linux开发,并且安装常用的C++工具例如cmake, g++, gdb, valgrind等。
安装步骤<1> 安装wsl子系统:12345678// win+X 打开powershell(管理员)wsl --install // 安装完成后,重启电脑,打开powershell再次运行wsl --install // 输入Linux用户名和密码(自己设定)// apt更新package(重要,否则后面的包安装可能会失败)sudo apt update && sudo apt upgrade
安装完成后,在windows开始菜单中可以看到WSL和Ubuntu系统的程序:(默认Ubuntu,也可以安装其他Linux系统)。可以选择Ubuntu,WSL或者powershell中的任意一个使用Linux系统:
<2> 安装C++相关编译、测试工具:1234567891011// 安装 cmakesudo apt-get install cmake// 安装 C++编译环境如g++, gdb等 ...
C++指针与被指对象的生命周期探讨
(更新中……)概述C++指针与被指对象的生命周期探讨:在使用指针时,一定要保证被指变量的生命周期大于指针的生命周期,否则会导致意外的错误。
指针的图解表示我们知道,变量在内存空间中是由“地址”加“值”进行存储的,特别像我们去超市的存包柜。地址代表变量在内存中的位置(第几号柜门),值代表变量本身的取值(该柜门内存放的物品)。
一级指针:要操作的数据存放在某个变量中,该变量的地址存放在指针变量中,该指针就是一级指针。
二级指针:在上述基础上,将一级指针的地址也存放在另外一个指针中,该指针就是二级指针(“指针的指针”)。
注意
不能将值赋给引用形参:int fun1(int &a), fun1(x + 3)
附录
typeid(var).name() 可以显示变量var的数据类型。typeid operator - cppreference.com
例:
12345678910111213141516171819202122#include <iostream>#include <typeinfo>#include <vector>u ...
前端基础04-三件套案例01-讨厌的广告牌
前端三件套案例01-讨厌的广告牌一个练手小案例,教你在网页中制作一个令人讨厌的卖房广告牌。当你在欣赏优美的古诗时,鼠标不小心滑到左侧,突然弹出的广告牌是否会把你吓一跳呢?
下面是HTML+CSS+JS源代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, init ...
前端基础03-JavaScript基本语法
JavaScript基础JavaScript 是 Web 的主流编程语言,可以实现网页与用户的动态交互。所有HTML页面都可以使用JS。
JS的导入方式在HTML中,使用<script>标签来导入JS命令。有两种方式:
内部导入:在HTML中直接使用<script>标签 + 内容。
外部导入:在HTML中使用<script src="xxx.js"></script>导入外部.js文件。
1234567891011121314151617181920<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js 基础</tit ...
前端基础02-CSS基本语法
CSS基础CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言。
CSS样式三种写法:(优先级:内联 > 内部 > 外部,”就近原则”)在HTML中,通过<style> 标签或属性来指定CSS样式。有三种方式:
内联:将style作为属性内嵌到某个标签中:<h2 style="color: purple; font-size: 28px;">
内部:在<head>中使用<style>标签
外部:使用外部link: <link rel="stylesheet" href="./css/style0.css">
示例 less02_css_basic.html (CSS中的注释为/* 注释 */,而HTML中的注释为 )
1234567891011121314151617181920212223242526272 ...
前端基础01-HTML基本语法
概述本系列笔记为前端入门学习,了解前端HTML+CSS+JS以及node.js等开发工具和框架的基础知识。
准备工作开发环境搭建:VS code + 插件:
HTML CSS Support (CSS编写神器)
Liver Server (实时预览)(安装后在vs code空白处右键=>open/stop with live server即可弹窗出page,编辑完只要ctrl+s就可以自动刷新)
Auto Rename Tag (同步修改标签,头尾绑定一起修改)
快捷操作:
直接输入!, p, h1等命令快速创建标签
shift + alt + down 快速复制当前行
ctrl + / 注释当前行
鼠标放在属性名称上,可以显示其属性的取值及解释
HTML基础HTML(HyperText Markup Language):超文本标记语言。其结构组成元素可以分为三类:(其实是display属性的三个值)
块元素(block):新行开始,独占一行。如div, p, h1~h6, table, ul, ol, li, dl, dd等。 ...
Git结合Visual Studio Code高效团队开发入门教程
概述Git 是一个开源的分布式版本控制系统,用于高效管理任何大小型项目源代码。Visual Studio Code是一款轻量级但是开发功能齐全的代码编辑器,可以通过各种插件的加持变身成为接近IDE的开发工具。本博客是入门教程,向初学者介绍如何结合Git和VS Code这两个强大的工具高效地进行日常团队协作开发。
Git与代码管理
并行开发
Git与VS Code的安装Git的下载与安装:Git (git-scm.com) => 下载 Git-2.45.2-64-bit.exe 双击安装即可。
参考教程:Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-CSDN博客
当在windows文件夹空白处右键菜单中出现 “Git GUI Here”和”Git Bash Here”的字样说明安装成功:
VS code的下载与安装:Download Visual Studio Code - Mac, Linux, Windows 。
参考教程:VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了_vscode使用教程-CSDN博客
...
Tips-利用python快速下载一个markdown文档中的所有图片(从其链接中)
需求给定一个markdown文件,其中的图片链接均来自网络,如何用python写一下脚本以实现快速将其中所有的图片从其所在的网站中下载下来。
代码示例download_md_pics.py
12345678910111213141516171819202122232425262728293031import requestsimport redef download_images_from_md(md_file): with open(md_file, 'r', encoding='utf-8') as file: content = file.read() # 读取markdown文件 # 使用正则表达式提取markdown图片链接: img_urls = re.findall('!\[.*?\]\((.*?)\)', content) # 下载其中的图片: for url in img_urls: try: ...
c++文件读写操作案例
读取txt文件内容并打印fopen()利用fopen()函数读取txt文件并打印其中的每一个字符:
123456789101112131415161718192021222324#include <stdio.h>#include <stdlib.h>#include <string.h>int main() { FILE* file = fopen("example.txt", "r"); if (file == NULL) { printf("无法打开文件。\n"); return 1; } char buffer[100]; while (fgets(buffer, sizeof(buffer), file)) { char* token = strtok(buffer, " \t\n"); while (token != NULL) ...