当执行到printf("Could not");会报错:
但是,修改以下两个位置中的任一个,都可以解决。我不明白为什么?请指导。
一、在程序的开始位置加上一句 printf("Could not");此时这句是可以打印出来的,并且下面的printf以及__tprintf 都可以打印出来
二、将for循环注释掉。
#include "pch.h"
#include <stdio.h>
#include <windows.h>
#include <tchar.h>
int _tmain()
{
//printf("Could not");
struct PBRecord
{ // bt_addr btAddr;
WCHAR wzName[32];
WCHAR wzNumber[64];
};
PBRecord *record = new PBRecord[3];
for (int i = 0; i < 3; i++)
{
ZeroMemory(record[i].wzName, 2 * sizeof(record[i].wzName));
ZeroMemory(record[i].wzNumber, 2 * sizeof(record[i].wzNumber));
}
printf("Could not");
_tprintf(TEXT("Could not open file mapping object (%d).\n"), GetLastError());
return 0;
}
2*sizeof(record[i].wzName)
这么写越界了,因为sizeof获取的是字节大小,而不是数组长度。
sizeof(record[i].wzName)的用法不对,sizeof获得的是不同类型数据的字节数,不能得到数组的长度。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。