-
GDB print与display命令 查视变量的值
所属栏目:[语言] 日期:2023-04-14 热度:8131
前面章节中提到,使用 GDB 调试程序,最常用的方法是:单步调试或者断点调试程序,期间通过查看某个变量或者表达式的值,判断当前程序的执行过程是否正确,不断缩小异常或 Bug 位于代码中的范围,最终找到并修复。对[详细]
-
C++ new和delete运算符说明
所属栏目:[语言] 日期:2023-04-14 热度:2479
在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示:纯文本复制int *p = (int*) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间free(p); //释放内存在C++中,这两个函数仍然可以[详细]
-
C++布尔 类别 bool
所属栏目:[语言] 日期:2023-04-14 热度:8348
在C语言中,关系运算和逻辑运算的结果有两种,真和假:0 表示假,非 0 表示真。例如:#include <stdio.h>int main(){int a, b, flag;scanf("%d %d", &a, &b);flag = a > b; //flag保存关系运算结果printf("flag = %d[详细]
-
怎样编译和运作C++程序
所属栏目:[语言] 日期:2023-04-14 热度:4443
C++ 和C语言类似,也要经过编译和链接后才能运行。在《C语言编译器》专题中我们讲到了 VS、Dev C++、VC 6.0、Code::Blocks、C-Free、GCC、Xcode 等常见 IDE 或编译器,它们除了可以运行C语言程序,还可以运行 C++ 程[详细]
-
C++类和对象究竟是什么意思
所属栏目:[语言] 日期:2023-04-14 热度:5052
C++ 是一门面向对象的编程语言,理解 C++,首先要理解类(Class)和对象(Object)这两个概念。C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员[详细]
-
学习C++之前需先学习C语言吗
所属栏目:[语言] 日期:2023-04-14 热度:1755
C++ 读作“C加加”,是“C Plus Plus”的简称。顾名思义,C++ 是在C语言的基础上增加新特性,玩出了新花样,所以叫“C Plus Plus”,就像 iPhone 7S 和 iPhone 7、Win10 和 Win7 的关[详细]
-
GDB条件断点(condition命令)细说
所属栏目:[语言] 日期:2023-04-11 热度:6734
前面章节给大家介绍了 GDB 调试器中普通断点、观察断点以及捕捉断点的功能和用法。其中值得一提的是,对于普通断点的建立,可以使用如下格式的 break 命令:(gdb) break ... if cond... 参数用于指定生成断点的具体位[详细]
-
gcc指令一次处置 多个文件
所属栏目:[语言] 日期:2023-04-11 热度:8167
通过前面几节的学习,读者已经了解了如何使用 gcc(g++)指令调用 GCC 编译器编译(包括预处理、编译、汇编和链接)C 或者 C++ 源代码,例如:[root@bogon demo]# lsdemo1.c demo2.c[root@bogon demo]# cat demo1.c#[详细]
-
GCC -l选项 手动增加链接库
所属栏目:[语言] 日期:2023-04-11 热度:3994
链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件。在链接过程中,它必须把符号(变量名、函数名等一些列标识符)用对应的数据的内存地址(变量地址、函数地址等)替代,以完成程序中多个模块[详细]
-
GCC -E选项 对源程序做预处置操作
所属栏目:[语言] 日期:2023-04-11 热度:5158
通过前面的学习我们知道,根据源代码文件后缀名的不同,gcc 指令可以自行判断出该源程序是由哪种编程语言编写,从而完成由源代码到可执行代码的转换工作。考虑到本教程主要讲解如何使用 gcc 指令运行 C/C++ 程序,因[详细]
-
GCC自动鉴别的文件扩展名
所属栏目:[语言] 日期:2023-04-11 热度:5972
通过前面的学习我们知道,对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器。并且对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件;而对于以 .cpp 为扩展名的文件,GCC 会自动将其视[详细]
-
GDB catch命令 创建捕捉断点
所属栏目:[语言] 日期:2023-04-11 热度:3387
要知道,GDB 调试器支持在被调试程序中打 3 种断点,分别为普通断点、观察断点和捕捉断点,其中普通断点用 break 命令建立(可阅读《GDB break》一节),观察断点用 watch 命令建立(可阅读《GDB watch》一节),本节[详细]
-
GDB watch命令 监控变量值的改变
所属栏目:[语言] 日期:2023-04-11 热度:4676
《GDB break命令》一节,给大家介绍了使用 break 命令在程序某一行的位置打断点。但还有一些场景,我们需要监控某个变量或者表达式的值,通过值的变化情况判断程序的执行过程是否存在异常或者 Bug。这种情况下,brea[详细]
-
GDB break(b) 设定断点
所属栏目:[语言] 日期:2023-04-11 热度:6201
默认情况下,程序不会进入调试模式,代码会瞬间从开头执行到末尾。要想观察程序运行的内部细节(例如某变量值的变化情况),可以借助 GDB 调试器在程序中的某个地方设置断点,这样当程序执行到这个地方时就会停下来。[详细]
-
gdb run(r)命令 开启程序
所属栏目:[语言] 日期:2023-04-11 热度:9827
使用 GDB 调试器调试程序的过程,其实就是借助 GDB 调试器来监控程序的执行流程,进而发现程序中导致异常或者 Bug 的代码。通过前面章节的学习,读者已经学会了如何启动 GDB 调试器,在此基础上,本节继续为大家讲解[详细]
-
GDB下载与安装教学
所属栏目:[语言] 日期:2023-04-11 热度:672
基于 Linux 系统的免费、开源,衍生出了多个不同的 Linux 版本,比如 Redhat、CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,有些默认安装有 GDB 调试器,但有些默认不安装。判断当前 Linux 发行版是否安装有 GD[详细]
-
gcc和g++是啥 有什么差异
所属栏目:[语言] 日期:2023-04-10 热度:3471
发展至今,GCC 编译器已经更新至 10.1.0 版本,其功能也由最初仅能编译 C 语言,扩增至可以编译多种编程语言,其中就包括 C++ 。除此之外,当下的 GCC 编译器还支持编译 Go、Objective-C,Objective-C ++,Fortran,[详细]
-
再说说UDP和TCP
所属栏目:[语言] 日期:2023-04-10 热度:8873
TCP 是面向连接的传输协议,建立连接时要经过三次握手,断开连接时要经过四次握手,中间传输数据时也要回复 ACK 包确认,多种机制保证了数据能够正确到达,不会丢失或出错。UDP 是非连接的传输协议,没有建立连接和断[详细]
-
图解TCP四次握手断开联系
所属栏目:[语言] 日期:2023-04-10 热度:2539
建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪[详细]
-
详细解析TCP数据的传输步骤
所属栏目:[语言] 日期:2023-04-10 热度:6498
建立连接后,两台主机就可以相互传输数据了。主机A分2次(分2个数据包)向主机B传递200字节的过程。首先,主机A通过1个数据包发送100个字节的数据,数据包的 Seq 号设置为 1200。主机B为了确认这一点,向主机A发送 A[详细]
-
图解TCP数据报结构以及三次握手 非常具体
所属栏目:[语言] 日期:2023-04-10 热度:9272
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接[详细]
-
TCP协议的粘包疑问 数据的无边界性
所属栏目:[语言] 日期:2023-04-10 热度:6056
上节我们讲到了socket缓冲区和数据的传递过程,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据。也就是说,read()/recv() 和 write()/send() 的执行次数可能不[详细]
-
socket缓冲区以及阻塞模式细说
所属栏目:[语言] 日期:2023-04-10 热度:9061
在《socket数据的接收和发送》一节中讲到,可以使用 write()/send() 函数发送数据,使用 read()/recv() 函数接收数据,本节就来看看数据是如何传递的。socket缓冲区每个 socket 被创建后,都会分配两个缓冲区,输入缓[详细]
-
send()/recv()和write()/read() 发送数据与接收数据
所属栏目:[语言] 日期:2023-04-10 热度:6780
在 Linux 和 Windows 平台下,使用不同的函数发送和接收 socket 数据,下面我们分别讲解。Linux下数据的接收和发送Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接[详细]
-
GCC编译器下载和安设教案 针对Linux发行版
所属栏目:[语言] 日期:2023-04-10 热度:7958
由于 Linux 操作系统的自由、开源,在其基础上衍生出了很多不同的 Linux 操作系统,如 CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,大多数都默认装有 GCC 编译器(版本通常都较低)。如果读者不清楚当前使用的[详细]
