你现在没慧这种用法是把struct ABC当数隐做一种数据结构来用,当然针对struck结构
ABC *p=(ABC*)malloc(sizeof(ABC))
p->str=s
这种用法是无可厚非的,毛病出在你在这个struck里定义了一个类对象CString,
在C++有关构造函数的知识里枯毕答,一个类A里如果包含有B类的对象,那么在这个A类定义对象时,编译器会在A类的构造函数里调用B的构造函数。
好了,矛盾出来了,struct ABC你是当结构体用的,没有所谓的构造函数,那么结构体里的str就没被构造,所以就会出现很多问题,具体出在哪我也不知道,那得去看CString源码。
由此,有二种改法,一个是把malloc改成new,一个是把CString改成内置类型,比如说char
你这样森握橘分配是不行的此团, 你用的是c++就得入乡随俗, 用new你这样只是分个地方给人家,可是CString的构造函数还皮凯没调用呢, 构造函数成功调用之后才能确保对象是可用的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)