技术教程

探秘C语言黑洞!避免这10个易错用法,让你的代码更安全!

作为一门具有广泛应用的编程语言,C语言虽然强大,但也同时存在一些常见的易错用法。这些错误不仅会给程序带来难以预料的错误结果,还会浪费开发者们宝贵的时间和精力。为了帮助读者更好地避免这些陷阱,本文将深入剖析C语言的10个易错用法,通过代码示例和详细说明,助你写出高质量、安全可靠的代码。指针引发的“野指针”问题指针是C语言的重要特性,但操作不当可能导致未初始化的 …

C语言复习资料(c语言必考知识点)

1、逻辑运算符&&表示与操作,当其左边表达式为【 】时,右边的表达是不会进行运算的。答案: 假2、逻辑运算符||表示或操作,当其左边表达式为【 】时,右边的表达是不会进行运算的。答案: 真4、运算符“&&”表示与操作,当且仅当运算符两边的表达式结果都为真时,其结果才为【 】,否则结果为假。答案:真5、运算符“||”表示或操作,当且仅当运算符两边的表达式结果都 …

避雷心经 | Coredump排查入门(coredump怎么查看)

作者:garrycai,腾讯PCG后台开发工程师| 导语 想必每一位 C++ 选手在工作中都难免会踩中 Coredump 地雷,而我作为 C++ 新手也与 Coredump 有过激烈的战斗,下文正是我在排查 Coredump 过程中总结的一些心得经验。1. 概念Coredump(核心存储)是进程异常终止或崩溃时的内存快照,操作系统会在程序发生异常而异常在进程 …

虚拟内存 和 page fault 的解释(虚拟内存csdn)

Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样进程就可以很方便地访问内存,更确切地说是访问虚拟内存。1、什么是虚拟内存假设某个进程需要100MB的空间,而内存假设是16MB的,如果进程直接使用物理地址,就会因为内存不足而无法运行。既然进程不是直接访问物理内存,那么进程中涉及的内存地址当然也不是物理内存地址。而是虚拟的 …

字符串也可以比较大小?C语言的strcmp函数

在C语言中,因为字符串没有被封装成对象,所以直接用==、!=比较。C语言提供了一个用于字符串比较的函数类型strcmp。 注意,字符串和字符完全不同,因为不同的编译器实现问题,返回值的情况也有所变化。strncat()函数,用于两个字符串的拼接。(1)函数原型 intstrcmp(const char *_Str1,const char *_Str2);( …

C语言进阶教程:位掩码与标志位操作

位掩码 (Bitmask) 和标志位 (Flags) 操作是C语言中利用位运算来高效管理和查询多个布尔状态或选项的常用技术。一个整数类型的变量(通常是 unsigned int 或 unsigned char)可以被视为一组独立的二进制位,每一位都可以代表一个特定的状态或标志。1. 什么是位掩码和标志位?标志位 (Flag):一个独立的二进制位,用于表示一个 …

C语言进阶教程:进阶教程:调试技巧:GDB/LLDB 的使用

调试是软件开发过程中不可或缺的一环,它能帮助我们找出程序中的错误(Bugs)并理解程序的行为。GDB (GNU Debugger) 和 LLDB (LLVM Debugger) 是两款功能强大的命令行调试器,广泛用于C、C++等语言的程序调试。一、GDB (GNU Debugger)GDB 是 GNU 项目的一部分,是类 Unix 系统下最常用的调试器。1. …

C语言进阶04-预防、检测及消除bug

01开发软件不等于编码写程序时会有"编码-->测试-->调试"的习惯.很不幸,这是开发软件的错误方法.专业的程序员会使用策略来预防、检测及消除软件bug.编码不是在开发软件.编码的意思是在文本编辑器中输入语句.编码只是开发软件的小部分.开发软件需要编程前、编程中、编程后的许多步骤.下面分着讲解.02编程前1、了解需求.2、考虑可能 …