
C/C++
文章平均质量分 62
C或者C++
阿达King哥
天下风云出我辈,一入江湖岁月催
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++虚函数表
本文介绍了使用Visual Studio和GDB调试工具分析C++类内存布局的方法。通过在VS中配置/d1 reportAllClassLayout命令,可以输出类的内存结构。文章重点分析了三种情况:无虚函数类、带虚函数类以及继承类。通过反汇编和内存监视,展示了虚函数表(__vfptr)的结构,说明虚函数调用机制。对于继承类,详细演示了基类函数被覆盖时的内存布局变化。调试结果表明,虚函数表指针位于对象首地址,其中保存了虚函数的调用地址。原创 2025-05-26 10:33:13 · 412 阅读 · 0 评论 -
C++的构造函数和析构函数
构造函数和析构函数在C++中分别用于对象的初始化和清理。构造函数在对象创建时自动调用,其名称必须与类名相同;析构函数在对象销毁时调用,名称前加~符号。对象的生命周期由{}界定,构造函数在对象声明时调用,析构函数在对象离开作用域时调用。例如,在函数内部,对象的创建和销毁顺序遵循最近{}原则,即先创建的对象后销毁。通过合理使用构造函数和析构函数,可以确保资源的正确分配和释放。原创 2025-05-12 17:05:20 · 253 阅读 · 0 评论 -
栈是如此重要——C函数栈传参
可以看到add2的函数栈在构建时,在rbp的高8位是回到main函数的地址(RA)。在C的main函数调用add2函数前,将第一个参数和第二个参数分别放在了rdi和rsi寄存器中,那么在进入add2的汇编片段时,这2个寄存器将会将值放在内存栈中。由于是O0选项进行的gcc编译,因此对C程序不做优化,上述汇编是将内存栈空间作为过渡,将值传递给参数寄存器。,当main调用add2时会传2个参数到add2执行的汇编片段,那么这2个参数是如何在栈上布局的呢?在进入add2之前,栈的形式如下。原创 2025-04-30 16:46:19 · 429 阅读 · 0 评论 -
栈是如此重要——C函数栈
栈为先进后出的数据结构在《数据结构》中有C的栈实现算法,然而很少看到对于栈有什么作用的描述。考虑一个场景,当CPU在计算时需要将某些值临时保存,待当前需要处理的事情处理完毕之后,重新把这些数据还原。此时应该怎样做?典型的应用就是函数调用,比如add2(2,3);return 0;在上述程序中,add2会调用add3函数,当调用add3函数前,计算机必须保留下add2函数的位置,以便在add3结束之后可以返回到add2处理的位置。此时,栈就起到了记录现场的作用。原创 2025-04-27 11:22:31 · 703 阅读 · 0 评论 -
C++的*了又*
先看下面一段代码主函数这里首先在堆中创建了一个HeapWord对象的空间,然后其首地址放入heapword中然后又在堆中创建一个HeapWord对象的空间,然后其首地址放入p中然后声明一个变量p1,该对象指向一个指针,该指针指向的是HeapWord类型。原创 2025-04-11 16:30:30 · 215 阅读 · 0 评论 -
GDB调试C++的new对象
源码Chunk.hpp#include "stddef.h"class Chunk{private: Chunk* _next; // Next Chunk in list const long _len; // Size of this Chunkpublic: Chunk(long length):_len(length){ _next = NULL; } char* bottom() const原创 2022-01-29 17:07:12 · 355 阅读 · 0 评论 -
int main( int argc, PCHAR argv[] )的参数意义
<br /><br />/* ************************************<br /> *main<br /> * 功能入口函数<br /> **************************************/<br />int main( int argc, PCHAR argv[] )<br />{<br />BOOL bFlag;<br />CHAR Buf[BUFSIZE]; <br />int i;<br /> <br />printf("%d/n",原创 2011-04-11 22:52:00 · 1014 阅读 · 0 评论 -
VC++中如何让RadioButton分组,并且互斥
Untitledbody, p, th, td, li, ul, ol, h1, h2, h3, h4, h5, h6, pre{ font-family: 宋体; line-height: 1.4;}body, p, th, td, li, ul, ol, pre{ font-size: 12px;}VC++中如何让RadioButton分组,并且互斥原创 2008-11-24 13:41:00 · 6377 阅读 · 1 评论 -
什么是常函数?
转自:http://blog.youkuaiyun.com/whyglinux/archive/2006/02/18/602329.aspx类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字转载 2008-10-06 09:41:00 · 11856 阅读 · 1 评论 -
CObject* (PASCAL* m_pfnCreateObject)(); 其中m_pfnCreateObject是什么意思?
MSDN:A function pointer to the default constructor that creates an object of your class (valid only if the class supports dynamic creation; otherwise,原创 2008-10-05 09:51:00 · 3681 阅读 · 1 评论 -
C++中的指针和数组
数组的指针即整个数组在内存中的起始地址,而数组元素的指针是数组中某一元素所占存储单元的地址。利用指针法引用数组元素能使目标程序质量高、占内存少、运行速度快。C++语言中规定:数组名就代表数组首地址,也就是数组第0号元素的地址。如 int a[10]; int *p; p=&a[0];/*与p=a,是等价的*/ p+i或a+i就是a[i]元素的存储地址,原创 2008-09-17 22:16:00 · 889 阅读 · 0 评论 -
C++中的函数指针
在C++中,指针变量可以指向普通变量、字符串和数组等,同时也可以指向函数,因为一个函数在编译时被分配一个入口地址,这个入口地址即为该函数的指针。所以,可以用指针变量指向函数,然后通过该指针变量调用此函数。 在C++中,函数的名称就代表了一般定义形式为: 数据类型表示符 (*指针变量名)() 例如:int (*p)(); 程序示原创 2008-09-17 22:15:00 · 854 阅读 · 0 评论 -
C++的常量指针和指针常量
1、常量指针 指向常量的指针变量的定义和使用 如:const int *p; 2、指针常量 如:char* const p = "abcde"; 可以这么理解: const p的类型式char*,所以p是不可以再修改的。也就是所p必须是在定义时就已经初始化,并且不能再修改了。 3、指向常量的指针常量 指向常量的指针原创 2008-09-17 22:11:00 · 853 阅读 · 0 评论 -
VC常用前缀列表
这些前缀就是所谓的匈牙利命名法。各个前缀可以互相组合,它们的具体意思如下: 匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的,结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。下面将介绍匈牙利命名法,后面的例子里也会尽原创 2008-09-19 20:32:00 · 1301 阅读 · 0 评论 -
C++中的指针和字符串
main(){ char* string = "c language"; count} 一般来讲,对于字符数组作为函数的参数可以采用以下4种方法: 实参 形参(1) 数组名 数组名(2) 数组名 字符指针变量(3) 字符指针变量 字符指针变量(4)原创 2008-09-17 22:18:00 · 876 阅读 · 0 评论 -
函数的参数是指针
函数的参数可以是指针 函数的参数也可为指针,它的作用是将一个变量的地址传递给被调函数的形参。此时,主调函数的调用点上的实参必须是地址值(指针),而被调函数的形参一定要定义成指针变量的形式,只有这样才能使实参和形参的类型相对应。此时,被调函数的形参得到的是实参的指针,因此,该形参变量就指向实参,在被调函数中对形参的操作就相当于对它所指向的实参的操作。 #include原创 2008-09-17 22:14:00 · 1727 阅读 · 0 评论 -
关于C++中指针的概念
指针的定义说明:1、指针变量名前面的*表示该变量为指针变量,它不识变量名本身的一部分。2、此处的类型标识符是该指针变量所要指向的变量的类型。(意思也就是说,,指针变量在计算的时候会根据类型判断其在内存中的位置偏移量,因为不同的类型在内存中占的大小是不同的。)3、变量的指针和指向变量的指针变量的区别:指针是某一变量在内存中所占存储单元的地址,是一个地址值;而指针变量则是专门存放其他变原创 2007-04-18 16:25:00 · 1359 阅读 · 0 评论