10月 31, 2012, 18:04
今天遇到一个很长时间都没发现的问题
先看看这个函数定义:
struct tm *localtime(const time_t *clock);
一般情况下大家都不会觉得这个函数有什么问题
使用的时候通常会根据习惯这样写:
struct tm *pTime = localtime(const time_t *clock);
当然,一般这样用是没问题的,函数返回指针,我用指针接收它,当然不会有问题
但是当你仔细想想这个指针的存储位置时,你可能会想到一个很容易被忽略的问题:
第一:它不可能是栈地址,原因不用说,因为从下层堆栈返回一个栈地址给上层堆栈肯定是用不了的,会报段错误。
第二:它可能是new出来的堆地址,如果真是这样他肯定还会写一个回收这个地址的接口。或者他也会在说明文档里说明,那就要调用者自己去delete,当然这样很不友好,容易导致内存泄露,一般不会这样做。
第三:它可能是一个静态地址,如果真是这样。那你就得注意了,任何调用这个接口的地方返回的都是同一个地址,你必须即取即用。
第四:它可能是一个上层堆栈传进去的上层栈地址,但是从这个接口来看根本没有传地址进去,所有这个情况也不可能。
说了这么多,那么我们来看看这个函数的说明:
The return value points to a statically allocated struct which might be
overwritten by subsequent calls to any of the date and time functions.
这里已经清楚的说明这个函数是返回了一个静态结构体指针。每次调用都会覆盖里面的数据。
10月 31, 2012, 17:42
上程序:
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
time_t tNow =time(NULL);
time_t tEnd = tNow + 1800;
//注意下面两行的区别
struct tm* ptm = localtime(&tNow);
struct tm* ptmEnd = localtime(&tEnd);
char szTmp[50] = {0};
strftime(szTmp,50,"%H:%M:%S",ptm);
char szEnd[50] = {0};
strftime(szEnd,50,"%H:%M:%S",ptmEnd);
printf("%s /n",szTmp);
printf("%s /n",szEnd);
system("PAUSE");
return EXIT_SUCCESS;
}
最后出来的结果是:
21:18:39
21:18:39
和最初想法不一致。
Continue reading ‘localtime和localtime_r’ »
10月 30, 2012, 15:37
终于。。终于。。经过了几乎5个月的时光后。。
布欧的疫苗算是完全打完而且已经进入安全期了。内心无比的激动,要知道布欧可是5个月没洗澡了~
哈哈~平时看他就像个流浪狗似的。但是又没办法,为了她的健康,只能让她忍忍了。
下面是布欧4个多月的时候的照片,那时候我们还住在城中村:
怎么看怎么像个流浪狗,哈哈。
Continue reading ‘布欧剃毛啦~’ »
10月 10, 2012, 00:22
他们经常在广州各大论坛上宣传自己是广州最大的养殖基地,有大型训练场地云云。。
包括58同城,广宠网,狗民网等等,58同城上最多他们的广告,经常换不同账号用不同名字发广告
什么广州最大养殖基地,广州安妮犬业等。。都是他们自己人弄的
网上贴的照片全是一套不知道哪弄来的,还声称自己服务非常周到,在他们那里买狗包永久疫苗,美容,看病,寄养等
包狗狗纯正,包品相体型,买狗签售后合同。。看到这里你是不是心动了?
你是不是看在他们那么多服务的条件上觉得在这里买准没错了?
你要是这样想,那你就大错特错了,百度一下大沥狗贩你就能看见他们的丑陋行径,他们打着优质服务,大型狗场的名号到处招摇撞骗
实际上他们根本没有自己的狗场,有一个网站已经清楚揭露过他们的行径http://news.hitvs.cn/bbs/BBSTopicRead-baoliao-409967-1.htm
Continue reading ‘在此揭露一个无耻的狗贩,南海大沥超越狗场’ »
10月 7, 2012, 11:57
生日:2012年6月6日
带回家:2012年8月14日
第一针疫苗:2012年9月8日
第二针疫苗:2012年9月28日
第三针疫苗+狂犬:2012年10月20日
下次疫苗,狂犬:2013年9月20日
第一次驱虫:2012年9月15日(驱虫失败)
第二次驱虫:2012年10月3日(成功塞进嘴巴)
第三次驱虫:2013年2月10日左右
2012年9月6日 3月龄 约3斤
2012年10月6日 4月龄 约4斤 体长24 肩高24 (狗日的狗贩子,不解释)
2012年10月27日 布欧剃毛,洗澡了
2012年10月29日 发现布欧掉了两颗牙
2012年12月17日 6月半龄 6斤 体长28 肩高28
2013年4月26日 布欧还有1颗小牙没掉