赋值CString时导致程序崩溃的一个问题

⌚Time: 2023-07-06 15:29:23

👨‍💻Author: Jack Ge

使用GetWindowTextW将vgj容器内指定结构体的opinion变量赋值


GetDlgItem(IDC_EDIT2)->GetWindowTextW(vgj.at(i).opinion);//将opinion赋值

导致程序出现崩溃,通常这种崩溃是由于访问野指针造成的

vgj.at(i)是一个结构体,而opinion是里面的CString变量,检查之前的代码有


memset(&vgj.at(i), 0, sizeof(vgj.at(i)));

将容器内该结构体内存清空,这就导致CString类型的opinion变量字符串地址指向了NULL,访问时发生了崩溃

这是对于结构体进行内存清空导致的错误,总之结构体里面如果有指针之类的变量,不能直接用memsetmemcopy这种内存操作函数。