C++
文章平均质量分 76
hongjiqin
这个作者很懒,什么都没留下…
展开
-
c语言中time.h用法详解
(原文 http://hi.baidu.com/%CC%EC%CD%E2%D3%DE%B2%C5/blog/item/b21a11fdb1d2d440d7887dcf.html) 关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念在C/C++中,对字符串的操作有很多值得注意的问题,转载 2009-01-23 12:24:00 · 4492 阅读 · 0 评论 -
Win32 SEH异常深度探索_6 回退
UnwindingLets briefly recap what unwinding meansbefore digging into the code that implements it. Earlier, I described howpotential exception handlers are kept in a linked list, pointed to翻译 2009-09-25 13:52:00 · 1205 阅读 · 0 评论 -
Win32 SEH异常深度探索_1
最近学习C++异常实现机制,面对一堆汇编代码无所适从,无意中看到这样一篇文章,读完后感觉对整个异常的原理清晰很多。看来学习还是要多去读读大牛的文章呀。这里严格来说并不算是翻译,仅仅是提炼的一些总结而已。具体内容还是参照原文把。原文地址:http://www.microsoft.com/msj/0197/exception/exception.aspx翻译 2009-09-25 13:40:00 · 1915 阅读 · 0 评论 -
Win32 SEH异常深度探索_3 默认异常回调函数
So far, Ive implicitly assumed that the operatingsystem always finds a handler somewhere in the linked list ofEXCEPTION_REGISTRATIONs. What happens if nobody steps up to the plate? As itturn翻译 2009-09-25 13:46:00 · 1419 阅读 · 0 评论 -
Win32 SEH异常深度探索_4 编译器对SEH的支持
While Ive made occasional reference to_try and _except, just about everything Ive written about so far is implementedby the operating system. However, in looking at the contortions of my two sma翻译 2009-09-25 13:47:00 · 1572 阅读 · 0 评论 -
Win32 SEH异常深度探索_5 一个异常帧链表遍历例子
If youre feeling a bit overwhelmed at thispoint by things like EXCEPTION_REGISTRATIONs, scopetables, trylevels,filter-expressions, and unwinding, so was I at first. The subject ofcompiler-level翻译 2009-09-25 13:50:00 · 1530 阅读 · 0 评论 -
Win32 SEH异常深度探索_8 异常处理是如何开始的
If youve made it this far, it wouldnt befair to finish without completing the entire circuit. Ive shown how theoperating system calls a user-defined function when an exception occurs. Ivesho翻译 2009-09-25 13:56:00 · 1997 阅读 · 0 评论 -
Win32 SEH异常深度探索_9 总结
最后,整个SEH的调用关系如下: KiUserExceptionDispatcher() RtlDispatchException() RtlpExecuteHandlerForException() ExecuteHandler() //翻译 2009-09-25 13:57:00 · 997 阅读 · 0 评论 -
当析构函数遇到多线程 —— C++ 中线程安全的对象回调
很好的一篇文章,原文地址:http://www.cppblog.com/Solstice/archive/2010/01/28/dtor_meets_threads.html 当析构函数遇到多线程 —— C++ 中线程安全的对象回调 当析构函数遇到多线程── C++ 中线程安全的对象回调 陈硕 (giantchen_AT_gmail)本文转载 2010-01-28 13:43:00 · 1279 阅读 · 0 评论 -
CppUnit 测试类注册过程
--------------------------------------------------------------------------------------1. 实现一个最简单的测试类--------------------------------------------------------------------------------------#include原创 2010-03-22 17:24:00 · 1408 阅读 · 0 评论 -
在C++中实现类似C#的字符串格式功能
在C#中,我们可以这样格式化一个字符串String s = String.Format ("The {0} costs {1}{2}", "car", 30000, "yuan");而在C++中,我们只能这样处理sprintf (s, "The %s costs %d%s", "car", 30000, "yuan");这种处理方法极不安全这里实现了一个类似C#的字符串原创 2010-03-18 17:44:00 · 1417 阅读 · 0 评论 -
Vs2005 C++编译器的一个bug?
今天使用VS2005编译如下C++代码时,发生编译器Cl.exe crash: 测试代码:static void f1 (){ struct St { int x; std::string s; }; struct CompSt { bool operator () (con原创 2010-03-26 11:35:00 · 1361 阅读 · 2 评论 -
C++给函数传数组参数
<br />在C++中,如果要给一个函数传入一个数组,一般都是传入两个参数一个数组指针和一个数组大小<br />例:<br />void print_1 (int n, int *datas)<br />{<br /> for (int i = 0; i < n; ++i)<br /> {<br /> std::cout << datas[i] << " ";<br /> }<br /> std::cout << std::endl;原创 2010-07-16 15:35:00 · 24376 阅读 · 7 评论 -
Win32 SEH异常深度探索_2 异常链表遍历
With this simplest of scenarios behind us, lets goback and fill in some of the blanks. While this exception callback is great,its not a perfect solution. In an application of any size, it would翻译 2009-09-25 13:43:00 · 1509 阅读 · 0 评论 -
C++异常处理机制__3.编译器何时生成栈回退代码
学习异常原理,先从几个例子看起编译器什么时候生成异常支持代码(栈回退支持)//没有栈回退代码void cpp_exception_test1(){ int *p = new int; CMyClass1 s1;}//有栈回退代码void cpp_exception_test2(){ CMyClass1 s1;原创 2009-09-16 16:27:00 · 1712 阅读 · 0 评论 -
STL学习笔记1(CArray与vector)
先做一个有趣的实验,测试一下CArray和vector添加数据的效率:结果(VS2005,release,默认优化O2): 可以看到,当需要添加大量数据时,CArray明显比vector慢。 测试代码:const int TEST_CASE_SIZE = 5;long len[TEST_CASE_SIZE];原创 2009-02-16 17:36:00 · 6655 阅读 · 1 评论 -
CArray实现机制
Normal 0 false false false MicrosoftInternetExplorer4 <!-- /* Font Definitions */ @font-face {font-family:SimSun原创 2009-02-17 15:08:00 · 992 阅读 · 0 评论 -
C++内存管理到底有多麻烦
看看这一段代码:int *p = new int(4);int &ri = (*p);delete p;p = NULL;ri = 1;//lots of code ...char *pc = new char(3); //aha, crash 编译器在底层做了什么,如何能在crash时方便检测到是哪里内存使用错误???原创 2009-02-25 17:47:00 · 840 阅读 · 0 评论 -
在Window系统中new 和 delete的工作原理[1]
<! v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}--> Normal 0 false fal原创 2009-02-26 11:29:00 · 2942 阅读 · 0 评论 -
New的VC编译器实现
当我们调用 new 的时候,例如 int *p = new int; 时,编译器到底作了什么工作呢?跟进断点看一看。 (在vc debug模式下)double *p1 = new double;00411A6E push 8 00411A70 call原创 2009-02-27 10:27:00 · 2225 阅读 · 0 评论 -
VC在Debug模式下的变量内存布局
在VC的Debug模式下编译程序,编译器在内存处理中加入许多额外的代码以方便发现程序中可能出现的越界现象。先做个小测试,下面这个程序可以看到有个小越界。 void FMemoryAllocTest(){ int x[4]; int y1, y2, y3; x[0] = 0;原创 2009-05-12 15:35:00 · 1571 阅读 · 0 评论 -
C++函数调用方式说明
首先,比较C++中的三种函数调用方式。测试代码:int _stdcall Add1(int x1, int x2, int x3){ return x1 + x2 + x3;} int __cdecl Add2(int x1, int x2, int x3){原创 2009-05-12 17:08:00 · 5215 阅读 · 0 评论 -
类对象的大小
class C1{};C1的大小为1。当类中无任何成员变量时,编译器会给他分配1字节空间。 class C2{private: int x;};C1的大小为4。 class C3{private: void原创 2009-05-18 09:52:00 · 1081 阅读 · 0 评论 -
boost智能指针shared_ptr使用要注意的几个问题
boost库中的shared_ptr是个好东西,一度我认为可以像C#那样使用对象,完全不用考虑内存的释放问题。不过使用起来发现还是有许多要注意的地方。首先,绝对不可以像这样使用:int *p = new int (10);boost::shared_ptr sp1 (p);boost::shared_ptr sp2 (p); 这个看上去很简单,一般都不会这样犯错原创 2009-08-04 12:06:00 · 5817 阅读 · 2 评论 -
多线程的一点思考
1.使用CreateThread创建线程,其中第三个参数是LPTHREAD_START_ROUTINE lpStartAddress,而LPTHREAD_START_ROUTINE被定义为typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)( LPVOID lpThreadParameter );#define WINAPI原创 2009-05-27 15:25:00 · 1070 阅读 · 0 评论 -
C++异常处理机制__1.SEH处理的函数栈布局
C++可以有两种异常处理方法1. SEH exceptions (Structured Exception Handling), 结构化异常处理它有三个关键字__try, __except, __finally,并通过RaiseException 抛出异常其中一个__try后只能跟一个__except或一个__finally。当__try后跟__except时,为异常处理(ex原创 2009-09-15 17:02:00 · 2713 阅读 · 0 评论 -
C++异常处理机制__2.SEH异常抛出与处理
测试函数:void SEH_test2(){ int *p1 = NULL; __try { *p1 = 10; } __except(EXCEPTION_EXECUTE_HANDLER) { cout << "SHE_test2::__except" << endl; }}原创 2009-09-16 12:39:00 · 5037 阅读 · 0 评论 -
程序性能 CPU cache
对程序优化进行,一般是采用良好的算法,合理使用编程语法,但有些时候我们也要考虑硬件的问题,比如CPU cache的优化。CPU cache对性能会有什么影响呢,先考虑一个例子:假设我们需要对一个数组求和,代码如下:int m = 1;for (int i = 0;原创 2011-08-01 11:57:36 · 1186 阅读 · 0 评论