编程问题集
文章平均质量分 95
Liuqz2009
不念过去不畏将来,全心活在当下!
展开
-
DLL导出API注意事项
中用来分配的环境不一样。关于这一点 window核心编程 中的 dll 里面进行了讲解,但是说真的我还是不明白为什么会这样。导出接口的方法的输入参数,这时可以作为引用来传递。返回时并不释放字符串空间,尽管执行了析构函数。// 现在该想到 com 中 IUnknown 的重要作用了吧!一个原则:某个模块中分配的空间就应该由它来释放!容器,会导致崩溃或其它内存问题,所以一般要求动态库的接口必须是。这种情况同样出现情况 2 的问题。的具体方式是不一样的。中释放空间,但由于是浅拷贝,所以将出现错误。原创 2024-04-03 11:11:27 · 863 阅读 · 0 评论 -
container_of详解
问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the t转载 2011-11-03 16:33:06 · 561 阅读 · 0 评论 -
怎样打印long long型数
前言: 在16位环境下,int/unsigned int 占16位,long/unsigned long占32位 在32位环境下,int占32位,unsigned int占16位,long/unsigned long占32位何时需要使用: long 和 int 范围是[-2^31,2^31-1],即-2147483648~2147483647,而unsigned范围是[0,2转载 2011-11-03 16:43:56 · 28820 阅读 · 4 评论 -
Linux下获取system调用的命令的返回值
例:status = system("./test.sh"); 1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。 2、如何正确判断test.sh是否正确执行?仅判断s转载 2012-09-07 13:44:08 · 12443 阅读 · 0 评论 -
系统进程打开文件最大句柄数的限制
转自:http://blog.csdn.net/iihero/article/details/8103815Windows下,默认值是512。但是可以改:/*** get and set the max handlers of opening files*/void testMaxHandlersOfFiles(){ printf( "maxstdio: %转载 2013-01-09 10:26:22 · 6279 阅读 · 0 评论 -
Linux/Unix 进程间通信的各种方式及其比较
进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义转载 2013-02-18 11:27:42 · 682 阅读 · 0 评论 -
delete this的使用
In order to understand "delete this" :First Step------dive into "delete p"delete p 执行了哪两个步骤?delete p 是一个两步的过程:调用析构函数,然后释放内存。delete p产生的代码看上去是这样的(假设是Fred*类型的):// 原始码:delete p;if (p != N转载 2013-04-02 09:06:37 · 778 阅读 · 0 评论 -
为 bash 转义文件名
最近遇到的一个问题:程序中有一个文件名,需要把这个文件名放在 shell 中执行,但文件名中可能包含特殊字符,所以需要转义。 比如,如果文件名是:[SumiSora&CASO&HKG][Tears_to_Tiara][02][GB].rmvb 这个文件名肯定不能直接放到 bash 中的,因为“&”和 [ 、] 等都是 bash 的特殊字符。 bash 的自动补全默认采用反斜线转载 2013-04-09 10:36:05 · 2259 阅读 · 0 评论 -
linux下多定时器的实现(经典)
一、已有的定时器接口 时空管理是计算机系统的主要任务。在时间管理中,我们经常利用定时器处理事情:比如tcp协议中利用定时器管理包超时,视频显示中利用定时器来定时显示视频帧,web服务中利用定时器来管理用户的超时。windows系统提供了SetTimer和timeSetEvent等定时器接口,linux中则提供了setitimer等接口。这些函数的接口很类似,大体上都是用户提供回调函转载 2015-01-15 10:48:15 · 1061 阅读 · 0 评论 -
交叉编译
参考一交叉编译大致过程1、首先配置环境变量。环境变量主要是为了下面的步骤做准备,如PATH等环境变量。将安装交叉编译器的bin目录添加到PATH环境变量,如 export PATH=/opt/eldk/usr/bin:$PATH2、进入源码包根目录下,运行./configure。configure命令有很多参数可配置,可以用./configure –help来查看,在交叉编译过程中可设置–ho转载 2017-04-11 09:23:30 · 5943 阅读 · 0 评论 -
什么是闭包?闭包的优缺点?
闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。1、变量作用域要理解闭包,首先要理解javascript的特殊的变量作用域。变量的作用域无非就两种:全局变量和局部变量。javascript语言的特别之处就在于:函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。注意点:在函数内部声明变量的时候,一定要使用...转载 2019-08-01 17:39:36 · 188 阅读 · 0 评论 -
offsetof详解
问: #define offsetof(struct_t,member) ((size_t)&((struct_t *)0)->member) 答:(struct_t *)0是一个指向struct_t类型的指针,其指针值为 0,所以其作用就是把从地址 0 开始的存储空间映射为一个 struct_t 类型的对象。((struct_t *)0)->me转载 2011-11-03 16:25:15 · 1183 阅读 · 0 评论 -
sizeof的用法
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位指正啊转载 2011-11-03 16:18:37 · 435 阅读 · 0 评论 -
define用法归类收藏
1.#define Conn(x,y) x##yx##y表示x连接y,举例说明:int n = Conn(123,456); 结果就是n = 123456;char* str = Conn("abc","def"); 结果就是 str = "abcdef"; 2.#define ToChar(x) #@x#@x,就是给x加上单引号,结果返回一个 const char转载 2011-11-03 16:49:23 · 1127 阅读 · 0 评论 -
C语言中可变参数宏
今天来说说宏。什么?宏也能可变参数?是的,你没有听错,带参数的宏和函数一样,同样支持可变参数。下面通过一个小程序加以说明。#define OUTSCREEN(msg,...) printf(msg,__VA_ARGS__)int main(int argc, char* argv[]){ OUTSCREEN("Hello World!n%s",转载 2011-11-03 16:54:06 · 669 阅读 · 0 评论 -
BSS段、数据段、代码段、堆与栈
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。 代码段:代码段(code segment/text segme转载 2011-11-03 15:44:47 · 722 阅读 · 0 评论 -
可变参数列表及printf函数的实现
一直没有搞懂printf函数是怎么实现的,今天又看了一下可变参数列表的函数的编写,大概的了解了一点。反推出原来没想到的一个东西,那就是函数形参列表中的变量在内存中的位置是顺次排列的。头文件Stdarg.h里的几个宏定义就是利用了这么一点,顺次获取多个参数,感觉还是挺笨的一个方法。先看一个最简单的可变参数列表的函数:void mytest(int a,...){ in转载 2011-11-03 16:58:06 · 895 阅读 · 0 评论 -
计算机中的原码、反码和补码
看到这个标题,很多人有话要说了,切!这个东西每一本计算机基础知识的书中都有介绍的,你还拿出来Show什么嘛!我的原则是你需要就来看一看,懂就不要去理会,倒也不必讽刺两句,我相信总有需要它的人。当初我看书是没看明白的,在网上查了好多资料才有所悟。 前几天跟老婆讲原码、反码和补码的知识,老婆似懂非懂,在这里我发表一下我个人的意见,浅显的把我所理解的原码、反码和补码的知识总结一下,一来可以给不转载 2011-11-03 15:41:50 · 714 阅读 · 0 评论 -
几个秒之间的对应关系
1、nanosecond1纳秒(1ns)等于一千分之一微秒2、microsecond 1微秒(1μs)等于一百万分之一秒 3、millisecond1毫秒(1ms)等于一千分之一秒 4、kilosecond1千秒(1ks)等于一千秒 5、megasecond1兆秒(1Ms)等于一百万秒 1光秒=299792458米 1光年=98481原创 2011-11-03 15:51:22 · 2464 阅读 · 0 评论 -
Linux头文件作用
1、 一些头文件的作用::ANSI C。提供断言,assert(表达式):GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含:GCC。文件夹操作函数。struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()等:ANSI C。字符测试函数。isdigit(转载 2011-11-03 15:56:41 · 482 阅读 · 0 评论 -
C代码怎样才能被C++代码使用
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" {#endif /* 一段代码*/#ifdef __cplusplus } #endif这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是转载 2011-11-03 16:38:16 · 1678 阅读 · 0 评论 -
设置SecureCRT来正确显示彩色
安装了SecureCRT5.5.1,登陆VMWare Player打开的CentOS5.0虚拟机,内容显示为单色,中文显示也有乱码的问题。在网上找到了解决方法:1、彩色显示问题Options -> Session Options -> Emulation,然后把Terminal类型改成xterm,并点中ANSI Color复选框。2、中文乱码问题文字copy总是会出现乱码,从S转载 2011-11-03 15:48:23 · 18704 阅读 · 1 评论 -
编程修养
本文是对陈皓所写的学习笔记,原文请参考http://blog.csdn.net/haoel/archive/2003/05/08/2872.aspx 编程修养主要将的是写程序的”修养”,其实就是写程序的习惯和规范等等.主要是作者总结C语言方面的一些注意点. 01、版权和版本 02、缩进、空格、换行、空行、对齐 03、程序注释 04转载 2011-11-03 15:58:09 · 637 阅读 · 0 评论 -
转义字符的完整诠释
转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号(' ),用于表示字符串常量的双撇号( " )和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008转载 2011-11-03 16:29:55 · 779 阅读 · 0 评论