函数a里的for循环的循凳谨环条件不能是i<=12,应该是i<12,否则i=12的时候,就是非法访问了。
char* a()int main(int argc, _TCHAR* argv[])
{
char *buf_s=a()
free(buf_s)
return 0
}
char* a()
{
高码 char *buf=(char*)malloc(12)
for(int i=0 i<12 i+=2) /*i=12的时候,非法访问*/
枣念基 memcpy(buf+i,"aa",sizeof(char[2]))
return buf
}
void *memcpy(void *dest, const void *src, size_t n)就是把以src指向地址为起始地址连续n个字节的数据复制到dest指向地址为起始地址连续n个字节的空间内。
如果连续调用memcpy但dest参数指向的地址不变的话,那当然就是覆盖数据了。
如果好追加数据,那么每次执行memcpy后要把dest的地址增加到你要追加数据的地址。
你的代码可以改为(请自己保证给data分配足够的存储空间):
int m=0
while (1)
{
byte *t= new byte[0x1000]//循环一次接收的数据
int n = sockClient.Receive(t, 0x1000)
if (n == 0)
{
break//接收完毕退出
}
memcpy(data+m*0x1000, t, n)//把收到的数据写入data
m++
}
【问题描述】:电脑重启后,设备和打印机中的打印机消失,并且无法使用打印机,但每次重新安装驱动后又可以使用。(如图1)图1【原因分析】:Print Spooler—文件打印服烂返务启动类型设置为手动导致【简易步骤】:【我的电脑】—右键—【管理】—【服务和应用程序】—【服务】—【print spooler服务】—服务状态【停止】—启动类型【向下三角】—【自动】—【启动】—【确定】【解决方案】:1. 点击我的电脑右键管理。(如图2)图22. 点击【服务和应用程序卖晌】,双击【服务】。(如图3)图33. 找到【print spooler服务】,服务状态饥配饥,点击【停止】。(如图4)图44. 启动类型中点击【向下三角】,选择【自动】,点击【启动】,点击【确定】。(如图5)图5注意事项:当此服务设置为禁用状态,打印机同样无法使用,并且无法安装打印机。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)