
其他
telnetipc
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
add_library、target_link_libraries和link_directories
cmake是Linux(这里默认是Ubuntu系统)下常使用的编译C++的工具,而使用cmake就需要先在CmakeLists.txt文件中对编译规则进行。这里介绍常用的三种指令add_library、target_link_libraries和link_directories,该笔记主要参考了cmake官网给的教程,如有需要请访问以下网址:https://cmake.org/cmake/he...转载 2019-07-22 15:22:13 · 573 阅读 · 0 评论 -
C++如何实现类对象只能动态分配或只能静态分配
C++中建立类的对象有两种方式: (1)静态建立,例如 A a; 静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,是直接调用类的构造函数。 (2)动态建立,例如 A* p = new A(); 动态建立一个类对象,就是使用new运算符为对象在堆空间中分配内存。这个过程分为两步:第一步执行operator new( )函数,在堆空间中搜索一块内存并进行...转载 2018-07-10 19:58:46 · 848 阅读 · 0 评论 -
比较全局变量、全局静态变量、局部变量、局部静态变量的区别
比较全局变量、全局静态变量、局部变量、局部静态变量的区别,他们在编译完后存储位置在什么地方、初始化值在什么地方、内存什么时候分配、赋初值对这些变量有哪些影响等。要弄清楚这些问题,首先要弄清楚下面几个知识点。 C语言分下面几个存储区: 1、栈区(stack) 由编译器在需要的时候自动分配释放,在不需要的时候就自动清除的变量存储区。通常存放的变量是函数的参数值、局部变量的值等,其操...转载 2018-09-05 16:30:45 · 967 阅读 · 0 评论 -
浅议 Dynamic_cast 和 RTTI
写这篇博文的目的是,记录学习过程。对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。问题: Static_cast 与 Dynamic_cast的区别来自书本上的解释: 用 static_cast<type-id > ( expression ) 1. static_cast(expression) The static_ca...转载 2018-07-18 11:23:46 · 281 阅读 · 0 评论 -
inline和virtual能够同时修饰吗
在类中定义并实现的成员函数默认为inline(内联)函数,而Inline函数又不能为虚函数,这是两个正确的结论,这位同学的疑惑是这两个正确的结论似乎有些冲突,冲突在哪里,因为我们平时在类中定义并实现的成员函数很多都声明为虚函数,下面看代码:// inline和虚函数冲突吗.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include <iostream>...转载 2018-09-05 16:30:58 · 1328 阅读 · 0 评论 -
如何减少频繁分配内存(malloc或者new)造成的内存碎片
高性能之内存池(频繁使用malloc和new会降低性能)内存池(Memory Pool)是一种内存分配方式。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一...转载 2018-08-08 10:44:26 · 15110 阅读 · 0 评论 -
static_cast和dynamic_cast的区别
3.1 static_cast用法:static_cast < type-id > ( exdivssion ) 该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用...转载 2018-09-10 10:42:30 · 24177 阅读 · 0 评论 -
在类的成员函数中调用delete this
在类的成员函数中能不能调用delete this?答案是肯定的,能调用,而且很多老一点的库都有这种代码。假设这个成员函数名字叫release,而delete this就在这个release方法中被调用,那么这个对象在调用release方法后,还能进行其他操作,如调用该对象的其他方法么?答案仍然是肯定的,调用release之后还能调用其他的方法,但是有个前提:被调用的方法不涉及这个对象的数据成...转载 2018-09-05 16:31:15 · 267 阅读 · 0 评论 -
c++中两个头文件定义同名类的解决办法
今天考虑了一个问题,如果两个头文件比如time.h times.h里面都定义了一个time的类,要怎么解决?vs编译器只对cpp文件进行编译,在编译阶段,这两个头文件的实现文件都不会出错,如果不在主函数中用到time这个类,程序也不会有问题。但是如果用到,那就是disaster!!!,如果你不得不在两个头文件中定义同名类,下面是我自己思考出来的最简单的解决方式---》》用不同的作用域包含#ifnd...转载 2018-06-27 16:38:58 · 7439 阅读 · 1 评论 -
malloc内存分配与free内存释放的原理
前段时间一直想看malloc的原理,在搜了好几篇malloc源码后遂放弃,晦涩难懂。 后来室友买了本深入理解计算机系统的书,原来上面有讲malloc的原理,遂看了,先明白理论,在看代码就理解比较快了= = 1.问题的引入: 为什么要使用malloc,主要是因为在代码中,为了节约内存,很多数据都是动态生成的,所以会用malloc,对应于C++中的new,底层还是调用malloc....转载 2018-07-30 15:18:23 · 1192 阅读 · 0 评论 -
程序猿的自我修养
最近身体不太好,突然感觉自己需要放松放松。技术的探索是无限的,但是自己的精力却是有限的,有时候确实该停一停,想一想。不知道每天坚持运动是否可以坚持下去,希望自己可以吧~ ...原创 2018-08-21 21:13:15 · 170 阅读 · 0 评论 -
std::shared_ptr 和 std::weak_ptr引用计数的循环引用问题
shared维护了一个指向control block的指针,control block内部包含了智能指针对象的引用个数。weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的 shared_ptr. weak_ptr只是提供了对管理对象的一个访问手段. weak_ptr 设计的目的是为配合 shared_pt...原创 2018-06-28 16:52:06 · 1256 阅读 · 0 评论 -
关于BSS段的大小
1.BSS段中的内容先明确 BSS 段“存放”的是未初始化的全局变量与局部静态变量,此处指的存放是指为其预留空间(占位符)。但BSS段在磁盘上不是真的占用变量大小的空间,它仅是在该段中记录了所有未初始化全局变量与局部静态变量的大小总和,至于每个变量的大小则存储在符号表的size属性中。即:BSS段内容:无内容,它将在段表中占一个段描述符,该段描述符的size属性将记录未初始化的全局变量与局部静态变...转载 2018-06-28 16:11:00 · 1235 阅读 · 0 评论 -
C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后, 或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual S...转载 2018-06-28 14:50:15 · 932 阅读 · 0 评论 -
强类型,弱类型,静态类型,动态类型的区别
类型系统的一些概念,众说纷纭,使用上也比较乱。有些东西,甚至不好严格定义。以下算学术界的一种相对“严格”的说法。 首先了解一下基本概念Program Errorstrapped errors。导致程序终止执行,如除0,Java中数组越界访问untrapped errors。 出错后继续执行,但可能出现任意行为。如C里的缓冲区溢出、Jump到错误地址Forbidden Behaviours语言设计时...转载 2018-06-28 14:14:57 · 215 阅读 · 0 评论 -
孤儿进程、僵尸进程、守护进程
我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。如果一个子进程结束了,但是他的父进程没有等待他, 那么这个子进程将变成一个僵尸进程。 但是如果该进程的父进...转载 2018-06-28 10:21:14 · 737 阅读 · 0 评论 -
ubuntu下github的使用
身为一个码农,掌握必要的代码管理工具,是必不可少的。这里简单介绍一下github的简单使用过程。一、注册github账号。请自行进入https://github.com进行注册。二、安装git及一些基本设置。1.安装git [python] view plain copy sudo apt-get install git 2.设置github账号信息[python] view plain co...转载 2018-06-13 10:42:47 · 13625 阅读 · 0 评论