随笔分类 - C++
摘要:在看《WINDOWS核心编程》,看到WINDOWS线程池这一章节,只是看到怎么怎么用,但是却不知道为什么要使用它的线程池,如果只是说为了节省创建线程和管理线程的步骤,个人觉得还是使用自己创建线程来的方便一些,目前对这一块理解很不到位,也没有实际的需求来写一个应用,在网上找了一些文章,在此记录一下,等我把这一章节看完,再做一个DEMO,到时候再把自己的理解写下来。http://msdn.microsoft.com/zh-cn/magazine/hh335066.aspxhttp://msdn.microsoft.com/en-us/magazine/cc163327.aspx
阅读全文
摘要:郑重声明,分割线以下的内容是错误的,由于我之前对这部分没看完整,故而写出分割线下面的错误内容.在此更正一下.如果某一时间点有线程在CriticalSection内的话,EnterCriticalSection()会让待进入CriticalSection区域内的其它线程处于等待状态.但是它会将待进入CriticalSection的线程切换到不占用CPU的状态,太棒了!以前一直认为,使用CriticalSection这种方式是实现互斥最节约资源的方式,今天看了<WINDOWS核心编程>的旋转锁,以及提及CriticalSection的实现方式,才发觉我原来的这种想法是错的.BOOL g
阅读全文
摘要:如题,下面是代码. 1 // header.h 2 class A 3 { 4 public: 5 bool StartServer(int port); 6 7 private: 8 unsigned int __stdcall listenThreadFunction(); 9 10 int mData;11 }12 13 // implement.cpp14 #include "header.h"15 16 union17 {18 unsigned int (__stdcall *ThreadPorc)(void*);19 unsigne...
阅读全文
摘要:最近在看接手的一些代码,有些问题让我蛋疼,把一些心得记下来,也算是给自己提醒1. uint 类型的值, 如果没有初始化, 使用if (value > 0)来比较的话, 得到的永远是true. 但是实际使用的值却不是你想要的值,有点坑爹吧2. const 成员函数里面不要使用STL容器的[]来查找对象, 因为[]找不到这个对象的话,将会插入新的对象,而const函数是不让修改成员变量的,所以会出错3. 拷贝构造函数 & 赋值运算符之伤如果类中的成员变量有数组存在的话, 请一定重载拷贝构造函数和赋值运算符号!!!如果你确保不会调用这两个函数的话, 那么请把它们的函数空体明明白白的写在
阅读全文
摘要:编译的时候找不到这个函数,MSDN上面是这样说的To compile an application that uses this function, define _WIN32_WINNT as 0x0501 or later. For more information, seeUsing the Windows Headers.看一下有没有定义_WIN32_WINNT这个宏,没定义的话,自己定义一下#ifndef_WIN32_WINNT#define _WIN32_WINNT 0x0501#endif这样就可以使用这个函数了,好像是系统版本的问题。
阅读全文
摘要:首先要确定一点就是,一个程序在启动以后,系统才会为这个程序分配内存,内存无非就这几种:虚拟内存,内存,高速缓存,寄存器,姑且叫这些内存是物理内存吧,因为它们都是以物质形式存在,不是玩概念的.注意,此处说的物理内存与大众说的物理内存是不一样的.然后再来看程序中使用的内存,这是玩概念的!程序中的内存分为三类:静态内存,栈内存,堆内存. 这个是根据变量(或对象)定义形式的不同,而采用不同的内存管理方式,至于某个变量(或者)是放在上面说的哪种物理内存中,这个就由系统来管理了.程序真的管不了,因为系统会把程序"切来切去",暂时用不着的就切到最慢的物理内存中去,要干活的就切到CPU中的
阅读全文
摘要:个人觉得,应该是内核标志位,而不应该是句柄标志位,因为内核是系统级的,虽然它和某个进程关联。假若这个内核对象共享的话,那么在不同的进程中就可以使用不同的句柄来表示同一个对象了。句柄是内核对象列表中的一个索引,好比一个struct { pCore; flag; ...}列表,这个flag的确是关于句柄,可是这个flag是用来描述此内核的一些特性,是否可继承,是否可关闭。所以我觉得,应该说是内核标志位更加合理。
阅读全文
摘要:堵塞 & 非堵塞 是 一种状态!同步 & 异步 是 一种模式!要了解详细的,看看这篇blog:http://blog.csdn.net/historyasamirror/article/details/5778378
阅读全文
摘要:1. #pragma once 让头文件只编译一次,不过,在早先的C++编译中并不是很普及,所以如果代码跨平台的话还是使用#ifndef #define #endif这三条指令防止头文件多次包含吧。2. #pragma comment(lib, "xxx.lib") 使用comment最多的就是加载一个库了。3. #pragme pack(push, 1) #pragma pack(pop) 设置字节对齐方式,这条是设置1个字节对齐,声明结构体或者类对象的时候加个这个,那些个成员变量就按照1个字节对齐的方式来对齐了,最后恢复编译器默认的字节对齐方式.4. #pragma m
阅读全文
摘要:1.检查guest账户是否开启 XP默认情况下不开启guest账户,因此些为了其他人能浏览你的计算机,请启用guest账户。同时,为了安全请为guest设置密码或相应的权限。当然,也可以为每一台机器设置一个用户名和密码以便计算机之间的互相访问。 2.检查是否拒绝Guest用户从网络访问本机 当你开启了guest账户却还是根本不能访问时,请检查设置是否为拒绝guest从网络访问计算机,因为XP默认是不允许guest从网络登录的,所以即使开了guest也一样不能访问。在开启了系统Guest用户的情况下解除对Guest账号的限制,点击“开始→运行”,在“运行”对话框中输入“GPEDIT.MSC”,打
阅读全文
摘要:查看项目属性时出现"未指定的错误",解决方法:关闭VS,复制一份那个无法查看属性的项目文件(X.vcproj)到其它目录,删除此项目文件,打开这个解决方案,出现错误"未能打开项目X.vcproj",不管它,点击确定,这时VS的解决方案下的X项目是灰色的,把它从解决方案中移除掉,把刚才备份的X.vcproj这个文件重新恢复到原来的目录,并将其添加到解决方案下面,现在查看这个项目的属性就正常了!
阅读全文
摘要:最近在搞lua的时候遇到一个问题,就是使用lua静态库的时候总是出现error LNK2019: 无法解析的外部符号 "void __cdecl luaL_openlibs(struct lua_State *)"还有其它的一些函数, luaL_newstate, lua_close, luaL_loadfile 这几个函数也是无法解析的外部符号. 先说说一下生成lua静态库的环境,项目类型,静态库,调用约定:__cdecl (/Gd), 编译为C++代码(/TP), 生成静态库.使用lua的环境,控制台应用程序,/Gd, /TP都是一样的,但是在包含lua头文件的时候没有
阅读全文
摘要:比如定义了一个常量const int v = 10; 那么在程序,但凡是使用到这个v的地方,在编译阶段就直接替换成10这个数值, 即, 此常量没有存储空间! 但是如果对这个常量进行了"取地址"运算的话, 那就会给这个常量分配一个存储空间了, 这个存储空间的数值是不可变的.
阅读全文
摘要:今天有幸看到一些以前的C代码,并且还遇到了一个C的问题,在此记录一下。纪念一下那些尘封的代码。#include <stdio.h>// 这种写法是古老的C语言写法,在一些比较老的库中还可以看到这样的源代码,我今天就有幸看到了这个的代码!void c_function(age, sex) int age; char sex; { printf("age:%d. sex:%c \r\n", age, sex); }int main(){ int age = 0; printf("%d \r\n", age); if (age == 0) ...
阅读全文
摘要:基类A有一个纯虚函数function, 且在A的构造函数中对此function发出了调用,这个时候,必须给出function的实体,否则会出错.再有类B public继承自类A,且类B实现了function,但是在类A的构造函数中调用的还是类A的function函数,而不是类B的function!
阅读全文
浙公网安备 33010602011771号