C/C++
sparkenglish
这个作者很懒,什么都没留下…
展开
-
native层修改Java对象中的数据
以native层访问修改Java层对象中的string数据为例介绍:1.获得object对应的类对象 jclass cls = (*env)->GetObjectClass(env, obj);2.从类对象中获得对象中数据的ID fid = (*env)->GetFieldID(env, cls, "s", "Ljava/lang/String;")3.获得对象中数据在虚拟机中的地址 jstr = (*env)->GetObjectField(env,...原创 2020-05-26 10:22:19 · 368 阅读 · 0 评论 -
指针,数组指针,指针数组
1.指针 指针可以看成一个变量,指针所占内存的大小和处理器的寻址空间大小有关,32位处理器指针大小为4个字节,64位处理指针大小为8个字节。 int* p; //定义一个int类型的指针,p就可以看成一个变量,p的值为0,表示p指向0地址;p也是占用内存的,编译器在栈上为p分配内存,存储p的值0,0地址的内容使用*p访问; p指向0地址,此0地址代表的是真实的内存条中的0物理地...原创 2019-11-06 11:53:20 · 170 阅读 · 0 评论 -
友元类&const
(1)友元类友元类的原理不知道,问什么这么写之后就能访问到类的私有or保护变量不明白友元类记忆方法:类是主动的,类中说明哪个类是友元类,哪个类才可以访问此类中的私有保护变量猜测:类中定义了友元类之后,将会有一个标记,记录哪些类中可以反问此类的私有或者保护变量class B;class A{ public: A(int v);~A(); private原创 2015-06-17 16:36:43 · 512 阅读 · 0 评论 -
大小端(big/little endian)
1.Endian的由来 Endian这个词最早出自于乔纳森·斯威夫特所写的《格列佛游记》,书中根据人们吃 鸡蛋的方式将人分为两类:一类为从圆头打开鸡蛋开始吃的人(big endian);一类为从尖头打开鸡蛋开始吃的人(little endian)。《格列佛游记》中描述的小人国因为吃鸡蛋的方式不同而发生内战,此虚构的故事实为讽刺当时的英国议会中毫无意义的党派斗争,统治集团的原创 2015-12-13 22:03:24 · 849 阅读 · 0 评论 -
C++对象在内存中的存储
最近忽然迷惑,子类继承父类之后,子类对象在内存中的存储方式是怎样的。理论上上应该是虚函数表指针、父类变量、子类变量。父类变量存储时是否和子类变量一起实现内存对齐呢?为了搞明白这个问题,做了如下实验。编译环境:win32,VS2008,Version3.5 SP1#include "stdafx.h"#includeusing namespace std;class原创 2016-01-02 17:36:43 · 2021 阅读 · 0 评论 -
enum类型的大小
enum结构类型中的变量个数,最大能够定义2^32个。因此有些编译器直接将enum类型的大小固定为4字节。嵌入式软件开发中,内存相对宝贵,编译器一般根据enum结构类型中定义的变量的值分配enum类型大小。比如:enum enumType{MONDAY,TUESDAY,WENSDAY = 0XFF};那么enumType的大小为1字节。enum enumType{MON原创 2016-01-02 17:46:04 · 7975 阅读 · 0 评论 -
Android中的GraphicBuffer同步机制-Fence
文章出处:http://blog.csdn.net/jinzhuojun/article/details/39698317Fence是一种同步机制,在Android里主要用于图形系统中GraphicBuffer的同步。那它和已有同步机制相比有什么特点呢?它主要被用来处理跨硬件的情况,尤其是CPU,GPU和HWC之间的同步,另外它还可以用于多个时间点之间的同步。GPU编程和纯CPU编程一转载 2016-11-10 14:09:04 · 662 阅读 · 0 评论 -
Android 4.4(KitKat)中的设计模式-Graphics子系统
文章出处:http://www.android100.org/html/201406/04/18051.html本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。可以看到在KitKat中Google对code还是整理过的,比如替换了像SurfaceTexture这种第一眼看到不知所云的东西,去掉了像ISurface这种打酱油的定义,改掉了明明转载 2016-11-10 14:16:00 · 411 阅读 · 0 评论 -
【C++专题】static_cast, dynamic_cast, const_cast探讨
文章出处:http://www.cnblogs.com/chio/archive/2007/07/18/822389.html首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术转载 2016-11-10 14:20:31 · 227 阅读 · 0 评论 -
Android Binder库结构
Binder机制是Android系统中实现进程间通信的重要方法,Server端和Client端的类结构图如下。 Server组件的实现原理原创 2017-05-18 18:18:12 · 349 阅读 · 0 评论 -
g++ 支持c++11 编译选项
g++ -o mainmain.cpp-std=c++11添加-std=c++11原创 2019-08-29 09:22:29 · 1456 阅读 · 0 评论 -
含有random指针的链表复制
(1)含有随机指针的链表拷贝typedef struct NODE{int value;NODE* next;NODE* random;};NODE* ListCopy(NODE *head){NODE *pHead = head;NODE *sHead = NULL;NODE *returnHead = NULL;while(pHead !原创 2014-10-17 15:18:27 · 706 阅读 · 0 评论 -
C++ Primer读书笔记
1.函数重载:参数个数,参数类型,const 非const;而不能仅仅根据函数返回值来实现重载2.static成员函数不能被声明为const函数,将成员函数声明为const就是承诺不会修改该函数所属的对象3.static成员函数不能被声明为虚函数4.::,.*,.,?:不能重载5.根据复合赋值操作符(如+=)来实现算术操作符(如+),比其它方式更简单且更有效6.一般而言,赋值操原创 2014-09-29 08:55:52 · 611 阅读 · 1 评论 -
String 常用方法
原文出处:http://www.cppblog.com/lmlf001/archive/2006/04/19/5883.htmlstring类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;str转载 2013-07-11 15:21:41 · 524 阅读 · 0 评论 -
c++对文本文件的读写
原文出处:http://www.cnitblog.com/wufajiaru/archive/2013/01/05/56390.htmlofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(转载 2013-07-11 15:23:54 · 1038 阅读 · 0 评论 -
VC/C++的中文字符处理方式
原文出处:http://blog.csdn.net/tangaowen/article/details/2527228一 引入问题代码 wchar_t a[3]=L”中国”,编译时出错,出错信息为:数组越界。但wchar_t 是一个宽字节类型,数组a的大小应为6个字节,而两个汉字的的unicode码占4个字节,再加上一个结束符,最多6个字节,所以应该不会越界。难道是编译器出问题了?二转载 2013-07-11 15:25:47 · 811 阅读 · 0 评论 -
UTF-8 code page
UTF-8是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。UTF-8编码规律:Char. number range | UTF-8 octet sequence (hexadecimal)原创 2013-08-18 21:10:12 · 1204 阅读 · 0 评论 -
add/remove operation is impossible, because the code element 'Cxxx' is read only
How to solve “add/remove operation is impossible, because the code element 'Cxxx' is read only”With Visual Studio 2008, we may meet “add/remove operation is impossible, because the code element 'C转载 2014-07-18 17:45:17 · 920 阅读 · 0 评论 -
did you forget to add stdafx.h problem
in vssolution: property/c/C++/Precompileed Headers/Precompiled Header to "not Using Precompiled Headers"原创 2014-06-14 12:38:57 · 1839 阅读 · 0 评论 -
VisualC++ WindowsForm不规则窗体的绘制
Winform窗体通常都是矩形的,而在实际编程中我们可能需要圆形、椭圆形或者不规则的背景图形状的窗体。在实现这种不规则窗体的绘制中,我们可以使用windows提供的api来实现。SetWindowRgn()是实现不规则窗体绘制的主要API接口函数。所有的 Windows 窗体都位于一个称为“region”中,窗体的大小如果超出“region”的范围,windows 会自动裁剪超出"re原创 2014-06-14 13:12:12 · 920 阅读 · 0 评论 -
VisualC++右键菜单的添加
windowsForm中右键菜单的添加非常简单,原创 2014-06-14 12:49:33 · 1978 阅读 · 0 评论 -
CView中OnDraw()函数调用的时间
视图绘画机理 在VC++的文档、视结构中, CView的OnDraw函数用于实现绝大部分图形绘制的工作。 如果用户改变窗口尺寸,或者显示隐藏的区域, OnDraw函数都将被调用来重画窗口。并且, 当程序文档中的数据发生改变时, 一般必须通过调用视图的Invalidate(或InvalidateRect) 成员函数来转载 2014-09-10 16:40:20 · 3850 阅读 · 0 评论 -
wstring操作与普通段字符操作对照表
原文出处:http://daniel-555.blog.163.com/blog/static/114792935201210267335115/ wstring操作与普通段字符操作对照表 字符分类: 宽字符函数普通C函数描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha(转载 2013-07-11 15:27:46 · 1042 阅读 · 0 评论