![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
Kevin_Shaw
这个作者很懒,什么都没留下…
展开
-
堆和栈的区别
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量转载 2010-04-19 12:50:00 · 440 阅读 · 0 评论 -
利用Pentium CPU时间戳计时
<br />对关注性能的程序开发人员而言,一个好的计时部件既是益友,也是良师。计时器既可以作为程序组件帮助程序员精确的控制程序进程,又是一件有力的调试武器,在有经验的程序员手里可以尽快的确定程序的性能瓶颈,或者对不同的算法作出有说服力的性能比较。 <br /> <br /> 在Windows平台下,常用的计时器有两种,一种是timeGetTime多媒体计时器,它可以提供毫秒级的计时。但这个精度对很多应用场合而言还是太粗糙了。另一种是QueryPerformanceCount计数器,随系统的不转载 2010-07-29 10:04:00 · 801 阅读 · 1 评论 -
C++ 获取系统时间
<br />#include<time.h> <br />#include<iostream> <br /><br />using namespace std; <br /><br />int main() <br />{ <br /> time_t timeval; <br /> timeval=time(NULL); <br /> cout<<"Time as local time is "<<ctime(&timeval)<<endl; <br /> return 0; <br转载 2010-07-29 09:46:00 · 498 阅读 · 0 评论 -
C++ 标准库中函数所对应的头文件
名字 头文件==========================================abort accumulate allocator auto_ptr转载 2010-05-10 16:44:00 · 568 阅读 · 0 评论 -
探索C++的秘密之详解extern "C"
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"转载 2010-05-05 11:48:00 · 454 阅读 · 0 评论 -
C++ Resources
Intro "C++ is an "object oriented" language. Object oriented programming is a reaction to programming problems that were first seen in large programs being developed in the 70s. All object oriented la转载 2010-04-29 17:16:00 · 2739 阅读 · 0 评论 -
C++多线程编程入门
C++多线程编程入门 第1节 背景 为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍。早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序。在大型机年代,计算能力是一种宝贵资源。对于资源拥有方来说,最好的生财之道自然是将同一资源同时租售给尽可能多的用户。最理想的情况是垄断全球计算市场。所以不难理 解为何当年IBM预测“全球只要有4台计算机就够了”。转载 2010-04-29 15:44:00 · 703 阅读 · 0 评论 -
C++中typename关键字的使用方法和注意事项
1, 什么地方使用?用在模板定义里,标明其后的模板参数是类型参数。 例如 templateT foo(const T& t, const Y& y){//....};templaceclass CTest{private: T t;public: //...} 其实,这里最常用的是使用关键字class,而且二者功能完全相同,这里的cl转载 2010-04-28 14:18:00 · 532 阅读 · 0 评论 -
C++中的几个关键字:static,const,inline
static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。static 的两大作用:一、控制存储方式:static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数转载 2010-04-28 12:32:00 · 1164 阅读 · 0 评论 -
C++中类的组合
C++中类的组合※组合的概念×类中的成员是另一个类的对象。×可以在已有的抽象的基础上实现更加复杂的抽象。 通过对复杂对象进行分解、抽象,使我们能够将一个复杂对象理解为简单对象的组合。 分解得到复杂对象的部件对象,这些部件对象比它高层的复杂对象更容易理解和实现。然后由这些部件对象来“装配”复杂对象。(即:搭积木)例子:class Point{private: fola转载 2010-04-27 10:14:00 · 2648 阅读 · 0 评论 -
C++中Static作用和使用方法
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全转载 2010-04-27 16:46:00 · 590 阅读 · 0 评论 -
交换两个变量效率问题
首先声明,在面向对象盛行的时代里,我改用对象这两个词来指代最广泛的变量。 现在的变量就不一定只是一个整型或浮点型,甚至不是一个基本数据类型。我们 将在更广泛的意义上讨论对象交换的问题。 在前一篇文章 “ 关于两个对象交换的问题”(注意,名称已改)中,我们讨论了交换两个变量 的几种方法,并给出了形式化的公式。而在这一篇文章中,我们将讨论的是效率 与可行性的问题。(注:这个主题的想法,主要是受fa转载 2010-04-22 14:12:00 · 884 阅读 · 0 评论 -
Visual C++ Inline Assembly 简介
高性能游戏代码的编程语言 如果你想编写出极高性能的游戏代码,那么使用汇编语言无疑将会是你的最佳选择。不过,眼看着编程技术已经发展到了今天这种格局,你再去直接用汇编语言来进行编程也未免太不合时宜了吧。作为一个高性能游戏程序的编写者,你应该用的是 Inline Assembly。 什么是 Inline Assembly Inline Assembly 就是我们通常所说的在线汇编转载 2010-04-22 11:35:00 · 472 阅读 · 0 评论 -
如何混合使用vc++和汇编
在Visual C++使用内联汇编用到的是__asm关键字,这个关键字有两种使用方法: 1.简单__asm块 __asm { MOV AL, 2 MOV DX, 0XD007 OUT AL, DX } 2.在每条汇编指令之前加__asm关键字 __asm MOV AL, 2 __asm MOV D转载 2010-04-22 11:38:00 · 606 阅读 · 0 评论 -
让VC++直接生成汇编代码
看了李子明写的那篇《让汇编揭开死循环的神秘面纱》后,突然有个想法,那就是能不能把C++的代码直接翻译成ASM的,那样对于我们程序分析就更加清析了,也不用反汇编去分析了。在网上没看到相关类似的教程,于是,便有了此文。首先,我们来看看子明兄原文中的小程序:#include void main(){int j, b[10];for ( j = 0; j {b[j] = 0;}}请问这个程序是否有转载 2010-04-22 11:22:00 · 2008 阅读 · 0 评论 -
内联函数(inline)机制与陷阱
内容提要: 1.内联相对于宏的优点 2.为什么“inline”只是程序员对编译器的建议(而非强制命令) 3.内联失败的陷阱 在C、C++中函数调用需要少量开销。有时候这少量开销积少成多,对程序性能造成影响。有时候函数本身很简单,函数调用的开销比执行函数内容本身的开销还大。C程序员一定知道可以采用宏(Macro)机制来改善上述情况。但是宏基本上是在预编译阶段做文本替换转载 2010-04-20 11:17:00 · 700 阅读 · 0 评论 -
C++同步锁管理的一种方法
在C++中,通过提供构造函数、析构函数来对处理资源的获取、释放。 通过C++的这种机制,我们可以很方便地处理C++中的加锁同步机制。把锁对象作为Guard对象的一个成员(m_lock),然后在Guard对象的构造中对m_lock进行加锁:m_lock.acquire(),在Guard对象的析构函数中进行解锁:m_lock.release()。先给出代码实例如下:template class Guard{public : Guard(const T & lock); virtual转载 2010-08-10 14:40:00 · 2432 阅读 · 0 评论