关于vs2010中malloc函数出错的有关问题

关于vs2010中malloc函数出错的问题
我建立了一个对话框工程,然后加入了一个student.h头文件并在其中声明一个结构体
#include "afxcmn.h"
struct student
{
public:
CString name;
};
然后在对话框中加入一个按钮和编辑框,编辑框加入变量CString m_cs,对按钮添加事件响应函数
void C测试Dlg::OnBnClickedButton1()
{
UpdateData(true);//接收数据
CString name1;//定义变量
student *p1,*p2;//声明对结构体指针
name1=m_cs;//将m_cs值赋予name1
/*p1=( student*)malloc(3*sizeof( student));//用malloc函数进行分配地址和赋值
p1->name=name1;*/


p2=new student;//用new,delete进行赋值
p2->name=name1;
delete p2;


MessageBox(_T("赋值成功"));
}
被我注释掉的那一段是出问题的代码,我想问各位的是这段代码为什么会编译时语法正确而内存分配出错!

------解决方案--------------------
malloc不会调用构造函数。
------解决方案--------------------
很明显的,CString没有能调用构造函数,malloc只分配内存,CString需要调用构造函数,用new方法吧
------解决方案--------------------
name一定要用CString么
可以用char数组
------解决方案--------------------
非要用malloc那就不要用CString