- 博客(5)
- 收藏
- 关注
原创 C++内存管理方式
int main()//分配一个A类对象大小的空间同时调用构造函数初始化//仅分配一个A类对象大小的空间delete p1;//调用析构函数并回收空间free p2;//直接释放p2指向的空间return 0;在申请自定义类型空间时,new会调用构造函数,delete会调用析构函数,而malloc和free不会。当自定义类型为某种容器时(链表或其他数据结构),若在回收空间时不调用析构函数,会产生内存泄漏的问题。
2024-02-21 22:48:37
351
原创 C++学习笔记
结果是24,可以看出,类中的成员函数并不存在于对象中,而是存放在公共代码区。这是因为每个对象的成员函数的功能都是一样的,相当于公用,如果成员函数存放在对象中的话,一个类创建多个对象时,相同的代码就会保存多次,浪费资源。需要注意的是,如果类中没有显式定义的构造函数的话,编译器会自动生成一个无参的默认构造函数,而自动生成的默认构造函数对内置类型的成员变量不做处理,对自定义类型的成员变量则调用相对应的构造函数。既然类的成员函数是存放于公共代码区的,那在使用的时候,它是怎么区分不同对象的呢?1、函数名与类名相同。
2024-01-28 02:09:30
343
原创 从C过渡到C++
其中:type是引用的类型,name是别名,而var则是被引用的变量(被取别名的变量),正确地使用引用可以提高效率,减少不必要的拷贝等开销。但要注意的是,在作为返回值使用时,若引用的对象在出作用域后被销毁的话,引用很可能会变成类似野指针一样的存在,引发各种随机事件。引用是一个已存在的变量的一个别名,编译器不会为引用变量开辟新的内存空间,引用和引用的变量共用一块内存空间。因为C++的编译器支持函数名修饰,而C的编译器在链接生成符号表阶段直接使用原来的函数名,无法区分同名函数,致使C不支持函数重载。
2024-01-26 01:41:02
307
1
原创 结构体内存对齐原因及机制详解
例如,如果结构体中有两个变量,一个是4字节的int类型、一个是8个字节的double类型,若不存在内存对齐机制的话,CPU一次读取8个字节,这8个字节中,有4个字节是能组成一个完整的int类型成员的,但是另外4个字节并不是完整的,需要CPU进行下一轮读取并对其中的前4个字节进行移位和合并,才能恢复double类型的数据,降低了运行的效率;成员name是char类型数组,以类型为准,char类型数据自身大小是1个字节,因此name的对齐数是1,存放在偏移量为4的内存地址中;如果是直接相加的话,输出就是14。
2023-03-28 17:17:01
162
原创 C语言库函数之字符串函数(strlen、strcpy、strcat、strcmp、strstr)的应用以及模拟实现
C语言库函数之字符串函数(strlen、strcpy、strcat、strcmp、strstr)的应用以及模拟实现
2023-03-19 20:46:06
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人