C++学习
北方的lang
学习
展开
-
堆和栈的区别
一、堆栈空间分配区别: 1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 二、堆栈缓存方式区别: 1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放; 2、堆是存放在二级缓存中,生命周转载 2017-05-12 22:00:17 · 154 阅读 · 0 评论 -
C++的虚析构函数
C++中的虚析构函数到底什么时候有用的,什么作用呢。 一.虚析构函数的作用 总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的.总结一下虚析构函数的作用: (1)如果父类的析构函数不加virtual关键字 当父类的析构函数不声明成虚析构函...转载 2018-09-05 13:43:28 · 119 阅读 · 0 评论 -
C++野指针的定义和常见原因?
野指针,也就是指向不可用内存区域的指针。如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃。 野指针不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,也具有很强的掩蔽性,if语句对它不起作用。 造成野指针的常见原因有三种: 1、指针变量没有被初始化。任何...转载 2018-09-05 10:42:48 · 257 阅读 · 0 评论 -
C++内存泄漏的定义、检查以及如何解决内存泄漏?(智能指针)
1.首先说到c++内存泄漏时要知道它的含义?内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。2.内存泄漏的后果? 最难捉摸也最难检测到的错误之一是内存泄漏,即未能正确释放以前分配的内存的 bug。 只发生一次的小的内存泄...转载 2019-02-20 19:05:36 · 1902 阅读 · 0 评论 -
c++ STACK堆栈
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。c++ stl栈stack的头文件为: #include <stack> c++ stl栈stack的成员函数介绍操作 比较和分配堆栈empty() 堆栈为空则返回真pop() 移除栈顶元素push() 在栈顶增加元素siz...原创 2019-02-27 14:10:53 · 331 阅读 · 0 评论 -
This指针,静态成员函数和非静态成员函数
1.virtual与静态函数 C++中,静态成员函数不能被声明为virtual函数。 例如,下面的程序会编译失败。#include<iostream> class Test { public: // 编译错误:static成员函数不能声明为virtual virtual static void fun() { } ...转载 2019-02-27 14:12:12 · 11012 阅读 · 0 评论 -
栈和队列
栈使用标准库的栈和队列时, 应包含先关头文件. 在栈中应包含头文件: #include< stack > 定义: stack< int > s;s.empty(); //如果栈为空则返回true, 否则返回false;s.size(); //返回栈中元素的个数s.top(); //返回栈顶元素, 但不删...原创 2019-02-27 14:12:34 · 109 阅读 · 0 评论 -
字符串和字符的输入
1.求字符串的长度strlen(str)和str.length()和str.size()都可以求字符串长度。其中str.length()和str.size()是用于求string类对象的成员函数string类函数介绍strlen(str)是用于求字符数组的长度,其参数是char*。2.C++中几个输入函数的用法和区别(cin、cin.get()、cin.getline()、getline()、ge...转载 2018-05-04 21:55:23 · 402 阅读 · 0 评论 -
C++ 中malloc函数详解(转载)
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块 说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NU...转载 2019-02-27 14:13:42 · 3834 阅读 · 0 评论 -
C++中assert
assert()相当于一个if ()语句,如果满足断言的执行程序,如果不满足则抛错误。 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(...转载 2019-02-27 14:13:02 · 3834 阅读 · 0 评论 -
C++中的vector的使用
理论:在c++中,vector是一个十分有用的容器。作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。使用vector需要注意以下几点:1、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很...转载 2018-05-02 10:21:43 · 380 阅读 · 0 评论 -
函数指针和指针函数的区别
1.指针函数 int *f(int a, int b); 此函数有返回值,返回值为int *,即返回值是指针类型的。首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说指针函数一定有函数返回值,而且在主调函数中,函数返回值必须赋给同类型的指针变量。 让指针标志 * 与int紧贴在一起,而与函数名f间隔开,原创 2017-05-12 21:28:36 · 171 阅读 · 0 评论 -
linux学习之write和read函数
1、write()函数定义:ssize_t write (int fd, const void * buf, size_t count); 函数说明:write()会把参数buf所指的内存写入count个字节到参数放到所指的文件内。返回值:如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。2、read()函数定义:ssize_t ...转载 2019-02-27 14:11:25 · 347 阅读 · 0 评论