今天在写程序为cstringarray变量操作时遇见:
ASSERT_VALID fails with illegal vtable pointer.
Assertion Failed: <unknown application>: File array_s.cpp, Line 236
这两个问题,几经查找、询问才知道是定义的结构体中的cstringarray虚拟表出错。
仔细看程序时才发现,我申请的结构体的指针,用memest初始化了,原来结构体没加cstringarray变量,全是char类型,所以用memset初始化。
cstringarray变量是不能用memset初始化的!!(至于为何还不很清楚......)
不用memset初始化,那我的结构体怎么初始化呢?
google一下发现有一下3种方法可以完成初始化:
1、结构体的构造函数中初始化
在C++中,结构体与类在使用上已没有本质上的区别了,所以可以使用构造函数来初始化。
如下代码所示:
struct Stu
{
int nNum;
bool bSex;
char szName[20];
char szEmail[100];
//构造函数初始化
Stu()
{
nNum = 0;
bSex = false;
memset(szName,0,s