记录
来源:互联网 发布:网络天才akinator 编辑:程序博客网 时间:2024/05/01 03:36
tchar
csting
大家都知道,CString不象其他数据类型,它似乎是没有长度限制的,为什么呢?因为CString并非是你赋予多大长度的字符串就占有多大的内存空间。它的空间分配机制是事先申请一个比较大的内存空间来存放字符串,在以后的操作中如果字符串超出了这个内存区域,它才会先释放原先的内存区域,重新申请一个更大的内存空间。同样,如果字符串变短了,它也不是立即释放多余空间,而是累积到了一定程度才释放。这样实现了“无长度限制”,又避免了频繁的申请、释放内存的操作。 CString的另外一个特色就是“写入复制技术(CopyBeforeWrite)”。当使用一个CString对象A来初始化另外一个CString对象B时,B并不会被分配空间,而是将自己的指针指向对象A的存储空间。除非对两个中的某个做修改时,才会为对象B申请内存。 http://blog.csdn.net/liuliu20036/article/details/2997899 http://bbs.csdn.net/topics/20340892
////////////////////////////////////////////////////////////////////////////////////////
stdcall 与cdecl
几乎我们写的每一个WINDOWS API函数都是__stdcall类型的,首先,需要了解两者之间的区别: WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清楚,这里就是问题的关键,如何清除?? 如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带来了一个棘手的问题,不同的编译器产生栈的方式不尽相同,那么调用者能否正常的完成清除工作呢?答案是不能。 如果使用__stdcall,上面的问题就解决了,函数自己解决清除工作。所以,在跨(开发)平台的调用中,我们都使用__stdcall(虽然有时是以WINAPI的样子出现)。那么为什么还需要_cdecl呢?当我们遇到这样的函数如fprintf()它的参数是可变的,不定长的,被调用者事先无法知道参数的长度,事后的清除工作也无法正常的进行,因此,这种情况我们只能使用_cdecl。到这里我们有一个结论,如果你的程序中没有涉及可变参数,最好使用__stdcall关键字。
delete this
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- 记录
- java常用jar包用途
- myeclipse 重命名项目名
- 开源框架Pushlet入门
- NYOJ 502筹建工程
- 字符串移位包含的问题
- 记录
- Oracle GoldenGate 系列:Replicat 进程遇 OCI Error ORA-14402 错误解决办法
- Python性能建议
- 交叉编译SPECCPU2006
- STL中list的使用(理论)
- pdo分装好的连接数据库的类
- linux shell批量拷贝文件
- php错误处理相关
- 听道笔记-04-14-2013《圣洁,与众人和睦》-唐崇荣