
C/C++
文章平均质量分 75
此专栏用来记录在C/C++学习和开发过程中踩过的坑以及积累的经验。
你若向前
道阻且长,行则将至。行而不辍,未来可期。
展开
-
C语言实现堆
在 C 语言中,实现一个堆通常涉及使用动态内存分配来存储和管理数据。原创 2023-12-23 22:34:12 · 494 阅读 · 0 评论 -
红黑树的C语言简单实现与代码解析
红黑树是计算机科学中一种重要的自平衡二叉搜索树。它确保了在最坏情况下,基本的动态集合操作(如插入、删除和查找)具有对数时间复杂度。原创 2023-12-23 23:06:17 · 1137 阅读 · 1 评论 -
原子操作实现自旋锁
自旋锁是计算机科学中用于同步多个执行线程或进程的机制之一。与互斥锁(mutex)相似,自旋锁的目的也是为了防止多个线程同时访问临界资源。但是,与互斥锁不同的是,当自旋锁的临界资源被其他线程锁定时,尝试获取锁的线程不会立即进入阻塞状态,而是会持续地“自旋”等待,直到该锁变为可用状态。自旋锁是一种同步机制,用于在多线程或多处理器环境中保护临界资源。尽管它在某些情况下可以提供低延迟和高性能,但也需要注意其可能导致的 CPU 争用和不适合长时间临界区的限制。因此,在选择使用自旋锁时,应该考虑应用的具体需求和场景。原创 2023-12-22 00:20:18 · 762 阅读 · 0 评论 -
原子操作:计算机科学中的基石
原子操作是一个不可分割的操作序列,这意味着它要么完全执行,要么完全不执行。这样可以确保在并发环境中,操作不会被其他任务或线程中断,从而防止数据不一致或其他潜在的并发问题。原子操作是计算机科学中的一个基础概念,它确保在多任务和多线程环境中的操作是不可中断的。通过使用原子操作,可以避免数据的不一致性、竞态条件和其他并发问题,从而确保程序的正确性和预期行为。在数据库管理、操作系统内核和并发编程等多个领域都广泛应用了原子操作,证明了其在现代计算机系统中的重要性和必要性。原创 2023-12-22 00:19:21 · 642 阅读 · 0 评论 -
深度解析objdump:探索二进制文件的奥秘
objdump是GNU Binutils工具集中的一个工具,用于分析目标文件(object file)和可执行文件(executable file)。它可以显示二进制文件的汇编代码、符号表、段信息等,是理解程序底层实现、调试和逆向工程的有力助手。objdump是一个强大的二进制文件分析工具,通过它,我们可以深入了解程序的底层细节,有助于调试、逆向工程和优化。在实际应用中,结合上述命令和场景,你可以更好地利用objdump来探索和理解二进制文件的奥秘。原创 2023-12-20 00:09:16 · 946 阅读 · 0 评论 -
深度解析C语言链接器:编织代码的魔法之舞
在代码编写完成后,各个模块的地址可能分散在内存的不同位置。链接器的任务之一就是通过地址重定位,将这些分散的模块整合到正确的内存地址上。连接器在程序调试中也发挥着关键作用。在软件开发的舞台上,C语言连接器如同一位巧妙的编舞家,默默地将代码的各个部分串联成一场优美的演出。首先,连接器进行符号解析,识别并处理代码中的符号,包括函数和变量等。我们将深入研究库链接的细节,包括静态链接和动态链接,以及库的加载和运行时解析。通过深度解析C语言连接器,我们将更好地理解这位编舞家在代码舞台上的不可替代的角色。原创 2023-12-20 00:02:38 · 553 阅读 · 0 评论 -
GDB 进阶:深入调试技术
GDB 调试技术原创 2023-12-17 23:57:34 · 597 阅读 · 0 评论 -
Manacher Algorithm(马拉车算法理解)
对于Manacher(马拉车)算法的理解原创 2023-03-21 12:31:52 · 1338 阅读 · 0 评论 -
C/C++可变参数列表参数处理方法va_list、va_start()、va_copy()、va_arg()、va_end()
C/C++可变参数列表的处理方法原创 2022-07-12 18:05:22 · 2208 阅读 · 0 评论 -
make工具与makefile介绍
简单介绍make工具并介绍Makefile的语法规则和使用方式原创 2022-04-06 14:26:57 · 1165 阅读 · 0 评论 -
memcpy_s这类安全函数使用介绍(来自安全 C 库: Safe C Library )
由memcpy_s引出对这类安全函数的介绍,并简单介绍其使用方式原创 2022-03-31 10:57:44 · 28844 阅读 · 7 评论 -
Mac中编译C++程序出现Undefined symbols for architecture arm64、ld: symbol(s) not found for architecture arm64
1.问题描述问题背景: 在 Mac 中,想将 C++ 程序编译成一个动态库,使用 cc 进行编译(有些时候编译简单的 C++ 程序也遇到过)。使用命令如下:cc -fPIC -shared -o encrypt_for_python.so encrypt_for_python.cpp -L/path/to/lib -I/path/to/include -std=c++11结果:Undefined symbols for architecture arm64: "___gxx_person原创 2022-03-02 22:37:58 · 12380 阅读 · 0 评论