stlchina.org早就进行了备案,但是没有反馈,一直处于备案中,为了方便大家,开通了有备案域名的临时访问。
http://stlchina.huhoo.net/
欢迎大家访问。
http://stlchina.huhoo.net/
欢迎大家访问。
typedef struct __aligning针对上面的struct:aligning1,我们使用sizeof计算会得到12个字节,显然没有符合4字节对齐的方式,以下写法更为科学:
{
unsigned short n;
unsigned int m;
unsigned short x;
} aligning1;
typedef struct __aligning此时struct会占用8个字节。
{
unsigned short n;
unsigned short x;
unsigned int m;
} aligning2;
typedef struct __aligning这样最多也就4个字节,其实4个字节可以最多表示32个成员变量,每个变量1bit;
{
unsigned n:1;
unsigned m:1;
...
unsigned t:1;
} aligning3;
以前在使用jni中,发现jni字符问题,另外jni还存在着线程的不安全性,着实感觉jni不怎么地,但是目前没有好的jni的替代方案,这次介绍的是jni字符编码问题中需要注意的一个问题。
在多线程环境中,iconv本身是不支持多线程安全的。
比如在代码段中:
iconv_t cd = iconv_open(tocode, fromcode);多线程环境中,iconv_open不断打开资源,虽然iconv_close能够释放,但是并不能立即释放资源,这样造成内存泄漏。
if (cd == (iconv_t)-1) {
exit(1);
}
iconv(cd, &inbuf, &len, &outbuf, &buflen);
iconv_close(cd);
比较正确的方法是静态地初始化iconv_open和析构iconv_close,或对上面代码段进行锁机制可实现线程安全。