
C/C++
lenchio
这个作者很懒,什么都没留下…
展开
-
开发过程中遇到的一些细节问题
TCHAR类型的使用使用VC++ 6.0进行Unicode编程主要做以下几项工作:1、为工程添加UNICODE和_UNICODE预处理选项。 具体步骤:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE。(注意中间用逗号隔开). 在没有定义UNICODE和_UNICODE前,所有函数和类原创 2011-11-15 05:42:49 · 690 阅读 · 0 评论 -
linux下的c语言【入门】
本文是feixiaoxing的linux下的C语言开发系列 的阅读笔记。大部分内容是来自原文,中间补充了一点网络上检索到的资料和自己的理解。makefile语法规则:目标:依赖文件(多个文件以空格间隔)[TAB]编译命令举例:main:main.o test1.o test2.o gcc -o main main.o test1.o test2.om原创 2014-02-25 22:16:58 · 1470 阅读 · 0 评论 -
uint8_t数据类型
在看一些开源c程序时,经常会看到很多不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。转载 2014-02-28 11:38:34 · 2687 阅读 · 0 评论 -
非阻塞式socket编程(select() )
原文地址:http://eastsun.blogbus.com/logs/7873846.htmlSelect在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件转载 2014-02-23 23:43:20 · 787 阅读 · 0 评论 -
hlist_head和list_head区别以及container_of机制 - [linux内核]
原文地址:http://www.blogbus.com/wanderer-zjhit-logs/149618655.html一:hlist_head和list_head,为节省空间而诞生的双胞胎兄弟1 struct hlist_head定义: struct hlist_head { struct hlist_node *first;};struct hlist_node转载 2014-02-14 11:14:13 · 2450 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2014-02-10 11:27:27 · 710 阅读 · 0 评论 -
CreateThread与pthread_create参数比较
原文:http://blog.youkuaiyun.com/jackalfly/article/details/8312822创建线程在 Windows 中,您可以使用 CreateThread() 来创建线程,创建的线程在调用进程的虚拟地址空间中运行。 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,转载 2014-02-09 20:12:14 · 2759 阅读 · 0 评论 -
模块尺寸优化
非常不错的讲VC和VS通过编译选项优化可执行文件大小的文章,内容如下:本文关注于使用VC编译器的编译选项来优化模块的尺寸,而“通过优化代码达到减少模块尺寸”(如通过DLL导出父类而在其他DLL中继承)是一个很复杂的命题,故不在本文的讨论范围内。即使是使用VC编译器的编译选项来优化模块的尺寸,我们在实际使用过程中也不得不在“代码运行速率”“模块尺寸”和“安全性”三个方面进行权衡。因此转载 2011-11-10 08:42:51 · 872 阅读 · 0 评论 -
非模态窗口
开发过程中想实现新线程创建子窗口处理子窗口的事情,父窗口仍然可以相应用户请求的功能。利用“非模态窗口”实现不多做介绍了,自己了解的也不深入,下面是相关资料链接:【转载】MFC下的模态与非模态对话框VC++中SetWindowPos函数详解(设置窗口位置 和非模式关系不大)MFC子窗口和父窗口(SetParent,SetOwner)非模态对话框在任务栏原创 2011-10-30 23:52:10 · 962 阅读 · 0 评论 -
c++中为什么有不能重载的运算符(摘录)
原创 2009-07-22 11:04:00 · 1471 阅读 · 0 评论 -
关于逆向引用
原创 2009-07-23 15:59:00 · 1482 阅读 · 1 评论 -
static在C和C++中的用法和区别
static主要有三个作用: (1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量 在C/C++中, 局部变量按照存储形式可分为三种auto, static, register。其中register不常用到,下面主要说说auto和static的区别。转载 2014-03-02 23:36:25 · 765 阅读 · 0 评论 -
C语言之三联符
考察如下 C 程序:??=includeint main()??你可能看着会觉得很奇怪, 然而这却是一段合法的 C 程序, 我在 vc2008 中尝试编译并成功.实际上, 三联符序列就是以 ?? 开头的三个字符, 用来对某个其它字符进行指定替换, 替换规则如下表:三联符替换??=#??/\??’^转载 2014-03-05 21:45:41 · 2736 阅读 · 0 评论 -
C语言之const修饰符
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,即就是说其所修饰的对象为常量。当你代码中想要设法阻止一个变量被改变,那么这个时候可以选择使用const关键字。在你给一个变量加上const修饰符的同时,通常需要对它进行初始化,在之后的程序中就不能再去改变它。可能有的人会有一个疑问,我们不是有在C中有预处理指令#define VariableName VariableValu转载 2014-03-05 22:32:27 · 1235 阅读 · 0 评论 -
多线程读读共享
多线程一般讲究资源互斥,涉及读写互斥,写写互斥但是有时候我们却希望多线程直接通过读读共享,提高运行效率下面是多线程共享公共数组的一段代码:#include "stdafx.h"#include "stdio.h"#include "windows.h"//#include // for _beginthread()int a[20]={0};DWO原创 2011-11-08 20:47:58 · 691 阅读 · 0 评论 -
动态申请指针数组
malloc的申请方式很容易理解: char **pchar = NULL; pchar = (char **)malloc(n*sizeof(char *));/pchar其实就是一个char* []数组 //现在可以在这里给数组元素赋值 pchar[0] = (char *)malloc(SIZE * sizeof(char));//或*(p+0) pchar[1] =原创 2011-11-10 10:59:53 · 6680 阅读 · 0 评论 -
【好文章】c++ 虚函数的实现机制:笔记
1、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public: virtual void f(); virtual void g();private原创 2011-12-02 15:35:18 · 563 阅读 · 1 评论 -
C++虚基类的实现机制:笔记
原文:http://blog.youkuaiyun.com/jiangnanyouzi/article/details/3721091#reply在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种转载 2011-12-02 15:38:50 · 520 阅读 · 0 评论 -
程序自删除VC++代码
void ExitAndDeleteSelf(){#define BAT_FILE_NAME "看你妹.bat"char szExePath[512] = {0};GetModuleFileName(NULL, szExePath, 512);HANDLE hFile = CreateFile(BAT_FILE_NAME, FILE_GENERIC_WRITE, FILE_转载 2012-05-20 16:15:21 · 809 阅读 · 0 评论 -
c++ 多线程编程基础
原文地址:http://blog.youkuaiyun.com/lzx_bupt/article/details/6910503c/c++: 多线程编程基础讲解(一)利用几篇文章简单记录下c与c++多线程编程基础入门的东西,每篇一个程序来记录,备忘。这些章节是由浅入深组织的,赖死狗!在注释中讲吧,佛楼米![cpp] view plaincopy转载 2014-02-09 13:22:44 · 1553 阅读 · 4 评论 -
头文件pthread.h
上一篇转载的文章中提到了符合posix标准的多线程c++ 多线程编程基础可以看到调用创建线程的接口pthread_create()须要包含头文件pthread.h以下是pthread.h的内容[链接]/*******************************************************************************/The S转载 2014-02-09 13:56:21 · 19916 阅读 · 1 评论 -
pthread_create主线程与创建的新线程之间退出关系
原文地址:http://blog.youkuaiyun.com/xiajun07061225/article/details/8976850我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。 1、 主线程等待新线程先结束退出,主线程后退出。正常执行。实例代码:[cpp] view plaincopy转载 2014-02-09 16:01:29 · 3682 阅读 · 0 评论 -
C++重载operator的示例
以下示例中定义了一个class test, 重载了>等符号:#include#includeusing namespace std;class test{public: int v; /*构造函数*/ test():v(0){} test(const int &a):v(a){} test(const test &转载 2014-02-09 20:00:35 · 1200 阅读 · 4 评论 -
C/C++ 中##(两个井号)和#(一个井号)的意思
地址:http://wan121674040.blog.163.com/blog/static/26672392201242483026637/?latestBlog## : 连接符,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串 注:子串(token)指编译器能够识别的最小语法单元# : 将传递过来的参数当初字符串进行替代转载 2014-02-14 11:30:29 · 2866 阅读 · 0 评论 -
无域名HTTP请求攻击分析
无域名HTTP请求攻击分析检测组内WEB服务器攻击日志时,在防护WAF上发现如下攻击记录:http://-c//cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75原创 2014-06-16 10:28:24 · 4503 阅读 · 0 评论