局部变量 char数组,不是每次都重新分配的吗??
写程序的时候发现一个不太理解的现象,本来的目的是做一个监听,按时间把在线玩家的名字保存下来
结果类似:
时间段1,序号1,名字1
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段2,序号1,名字1
时间段2,序号2,名字2
时间段2,序号3,名字3
时间段3,序号1,名字1
时间段3,序号2,名字2
时间段3,序号3,名字3
程序为:
多次调用这个方法,得到的结果是类似:
时间段1,序号1,名字1
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段1,序号1,名字1 //时间段2里含有时间段1的"字符串"
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段2,序号1,名字1
时间段2,序号2,名字2
时间段2,序号3,名字3
时间段1,序号1,名字1 //时间段3里含有时间段1和2的"字符串"
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段2,序号1,名字1
时间段2,序号2,名字2
时间段2,序号3,名字3
时间段3,序号1,名字1
时间段3,序号2,名字2
时间段3,序号3,名字3
后来修改程序,每次先将cpTemp 清空,则程序正常
程序为 :
我的问题是,难道每次 char cpTemp[cusBufferSize]; 的时候,cpTemp不都是新的吗?
怎么会还保存着上次的信息,切让本次 连接在上次的后面呢?
我试过
char *cpTemp=new char[cusBufferSize];
char *cpTemp=(char *)malloc(cusBufferSize);
也都不行,请c++朋友解答一下;
结果类似:
时间段1,序号1,名字1
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段2,序号1,名字1
时间段2,序号2,名字2
时间段2,序号3,名字3
时间段3,序号1,名字1
时间段3,序号2,名字2
时间段3,序号3,名字3
程序为:
//info:结果信息结构体
void RfC51GaugePlugin::UpdateScoring(const ScoringInfoV2 &info)
{
DWORD now=GetTickCount();
//保存间隔
if(now-lastSaveTime>saveDelay && info.mNumVehicles>0)
{
const unsigned int cusBufferSize = 50*1024;
char cpTemp[cusBufferSize];
//历遍在线玩家
for( long i = 0; i < info.mNumVehicles; ++i )
{
//玩家信息结构体
VehicleScoringInfoV2 &vinfo = info.mVehicle[ i ];
//字符串连接 : 时间段1,序号1,名字1 + "\n"+ 时间段1,序号2,名字2 ....
sprintf(cpTemp, "%s%d,%d,%s\n"
,cpTemp,GetTickCount()/1000,i
, vinfo.mDriverName);
}
saveLog(cpTemp);
}
}
多次调用这个方法,得到的结果是类似:
时间段1,序号1,名字1
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段1,序号1,名字1 //时间段2里含有时间段1的"字符串"
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段2,序号1,名字1
时间段2,序号2,名字2
时间段2,序号3,名字3
时间段1,序号1,名字1 //时间段3里含有时间段1和2的"字符串"
时间段1,序号2,名字2
时间段1,序号3,名字3
时间段2,序号1,名字1
时间段2,序号2,名字2
时间段2,序号3,名字3
时间段3,序号1,名字1
时间段3,序号2,名字2
时间段3,序号3,名字3
后来修改程序,每次先将cpTemp 清空,则程序正常
程序为 :
//info:结果信息结构体
void RfC51GaugePlugin::UpdateScoring(const ScoringInfoV2 &info)
{
DWORD now=GetTickCount();
//保存间隔
if(now-lastSaveTime>saveDelay && info.mNumVehicles>0)
{
const unsigned int cusBufferSize = 50*1024;
char cpTemp[cusBufferSize];
sprintf(cpTemp,""); //清空
//历遍在线玩家
for( long i = 0; i < info.mNumVehicles; ++i )
{
//玩家信息结构体
VehicleScoringInfoV2 &vinfo = info.mVehicle[ i ];
//字符串连接 : 时间段1,序号1,名字1 + "\n"+ 时间段1,序号2,名字2 ....
sprintf(cpTemp, "%s%d,%d,%s\n"
,cpTemp,GetTickCount()/1000,i
, vinfo.mDriverName);
}
saveLog(cpTemp);
}
}
我的问题是,难道每次 char cpTemp[cusBufferSize]; 的时候,cpTemp不都是新的吗?
怎么会还保存着上次的信息,切让本次 连接在上次的后面呢?
我试过
char *cpTemp=new char[cusBufferSize];
char *cpTemp=(char *)malloc(cusBufferSize);
也都不行,请c++朋友解答一下;
...全文
相关推荐
char、char*、char**数组的区别
### char、char*、char** 数组的区别在C/C++编程语言中,`char`、`char*` 和 `char**` 分别代表了不同的数据类型和它们的应用场景。
C++编程之CString、string与、char数组的转换
C++编程之CString、string与char数组的转换C++编程中CString、string和char数组之间的转换是非常重要的知识点,因为它们都是字符串类型,但是它们之间的转换却不是那么直接
Java中char数组(字符数组)与字符串String类型的转换方法
在Java编程中,字符数组(char数组)和字符串(String类型)是两种常见的数据表示方式,它们在处理文本信息时各有优势。
字符串转换为16进制char数组
#### 知识点二:字符串与16进制char数组的关系在程序设计中,字符串通常被表示为字符序列。将字符串转换为16进制char数组意味着将每个字符对应的ASCII码值转换为其16进制形式。
详解C语言中Char型指针数组与字符数组的区别
在C语言中,Char型指针数组与字符数组是两种不同的数据结构,它们在存储、操作和灵活性上有所差异。首先,让我们深入了解char类型的指针数组。在C语言中,`char *name[3]`定义了一个指


