自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 怪问题的解决

  在参与openSSL项目的时候,发现一个怪异的情况:用标准malloc,free有错,要使用OPENSSL_malloc, OPENSSL_free正常,可能openSSL提供了自己的堆管理,浪费了我一个半小时。 使用OPENSSL_malloc分配的空间不够,sprintf溢出此空间,但VC报告一个NULL访问异常(调试状态下运行又没有错误),不知是怎么来的。还是意外发现了这

2008-08-22 10:26:00 547

原创 java线程

  notify()、notifyAll()、wait()必须在锁住该对象的同步语句内调用。摘录Jdoc的说明:This method should only be called by a thread that is the owner of this objects monitor. A thread becomes the owner of the objects mon

2008-08-22 10:24:00 686

原创 字节对齐的简单方法

  // 此语句用于把地址对齐到cell的整数倍,仅在cell为偶数时正确。(((long)space) + (sizeof(cell) - 1)) & ~(sizeof(cell) - 1) 原理描述:假如一个数为18,cell为四字节,则cell整倍数的下一地址与现有地址相差不超过sizeof(cell)-1,这里的下一地址为20。把一个数加上sizeof(cell)-1,

2008-08-22 10:18:00 739

原创 const定义的常量

  const定义的常量会被编译器看作是固定值的变量,它与宏不同。因此,假如有头文件"head.h" #ifndef HEAD#define  HEADconst int EOF = -1;#endif----------------------------------有两个C文件C1,C2如下:C1#include "head.h" C2

2008-08-22 10:15:00 825

原创 C语言的try and catch机制

  C语言具有的类似try and catch机制,unix下机制也相同。VC例子:#include #include jmp_buf mark;  // 保存stack环境的变量  void main(void){int jmpret;int result;jmpret = setjmp( mark );  @1@ // 保存当前stack环境到mar

2008-08-22 10:15:00 2534

原创 C99对于普通C的改变

  一、总述c99:粗略描述,并非完整的归纳。 增加部分1.类型,属于关键字布尔 _Bool               头文件 包含更简明的宏bool,当不与原有代码冲突时,建议包含此头文件。复数 _Complex         头文件 包含更简明的宏comlex,当不与原有代码冲突时,建议包含此头文件。虚数 _Imaginary       头文件 包含更简明的宏

2008-08-22 10:13:00 845

原创 传数组参数

 多维数组当函数参数,最后几个长度要指定,如:printArray(int [][2][3],length); 一个技巧是把多维数组当一维数组传。如:int a[][2]={1,2,3,4}传给printArray (int [],int) 对数组的取址是多余的,如 a 和 &a 的值相同。数组本身是一个地址的常量值,不是变量int a[],则a是常量。

2008-08-22 10:11:00 963

原创 C支持参数可变的函数

 例: 当调用函数add_values(10,20,30,0)时,调用的堆栈为:-------------10-------------20-------------30-------------0-------------函数返回地址------------- 可以通过宏va_list、va_start、 va_arg、 va_end 来从

2008-08-22 10:10:00 588

原创 C比较浮点数

  实际上,精确比较浮点数还是可以的。如:void main(void){float a=0.065F;if(a==0.065F)printf("%f",a);}可以输出a的值,只是不太方便罢了,并非如书上所说,由于浮点数不能精确表示0.065F,所以比较一直为假,因为比较表达式中的0.065F也要存入内存中。假如改为a==0.065则为假,因为0.065默

2008-08-22 10:08:00 742

原创 指针采用值传递

 在C中,指针采用值传递,就是在传参数时,拷贝形参指针的值给实参指针。 例子:void swap (int *,int *); void main(void){int a=100,b=0;int *pa=&a,*pb=&b;printf("pa = %d,pb = %d/n",pa,pb);swap(pa,pb);printf("pa = %d,pb

2008-08-22 10:07:00 745

原创 C的结构

  在内存中,结构不一定是它表面看起来那么大。typedef struct{char abc[2];int i;} ABC;printf("%d/n",sizeof(ABC));//结果为 8注:具体的大小依赖于编译器的字节对齐情况。有些编译器甚至会调整结构中的成员的排列顺序。 即使空结构,也不会为0字节,可能是避免为零时,空结构的地址就等于紧接它的数据

2008-08-22 10:05:00 625

原创 sizeof

 sizeof是返回类型的字节数,当类型是指针时,32位机返回4字节,不返回指针指向的数据大小。 如: char* string = "abc"; sizefo(string)=4; strlen(string)=3;但 char string[32]="abc";则:sizeof(string)=32;sizeof((char*) string

2008-08-22 10:02:00 536

原创 指针

  记住:在C中,指针和其它基本类型一样,是分类型的,根据类型不同,操作会迥异。如 int *ip;   float *fp;ip++; fp++;每次增加的地址数不同。 也有无类型的指针 void * ptr,这时就不能对ptr进行加量或减量。如:ptr++指向函数的指针int (*min)();函数的指针可以忽略函数的参数,也可以

2008-08-22 09:55:00 554

原创 C# 引用DLL报异常

方法1.假如你使用的是MFC DLL, 必须用支持CLR参数编译,才能被C#调用2.假如目标平台不同,调用DLL会弹出 BadImageException,必须统一成相同平台,例如 x32 X86 ARM等,可以在solution device manager设置

2008-07-17 10:03:00 695

左撇子程序员用的鼠标指针

用工具做的,和正常鼠标指针相反的左撇子鼠标指针。

2009-11-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除