因为m_pList->string1没有空间,要分配空间!
解决方案 »
- 在VC里判断表(access)中的某一记录(以采样时间为顺序),根据采样时间判断,若已经存在,则不再存数据,不存在的话插入数据。
- 请问VC6.0在更改界面的控件ID后,如何让它关联的变量和函数自动更正
- CSocket大问题 急急急!!!
- 如何在vc工程里添加图片文件
- 这两本书哪本好
- 请问矩阵求逆的算法
- 我做了一个加壳软件,给一个程序加壳后,该程序的图标已经变成我加壳软件的图标(正常)但我怎样在给该程序加壳的同时也把他的快捷方式的
- 在VC.NET中Date Time Picker ,Show none 功能怎么用???(急,回答者马上送分)
- 在MFC SDI单文档窗口(非对话框)中怎么使用tab呢?
- 可否把一个工程里的对话框导入到另一个工程?
- VC6.0 中怎样实现字符串切取如 "123456789" 我要切取 第3 位开始的 4 个字符怎么取
- 再问:win2000中为何没有midl.exe文件,如何得到??谢谢(在线等待)
List* m_pList=new List;
m_pList->tring1="asdfads";
delete m_pList;
/********************************************/
C++中结构和类是类似的,只不过其成员变量默认情况下是public的。C++强烈要求将类实例化过程中要使用new 来进行,所以,依我看应该这样子:
struct List{
CString tring1;
CString tring2;
};
定义以结构体指针
List* m_pList= new(List);
m_pList->a = "i like C++";
cout << m_pList->a << endl;
又应该如何那难道用MALLOC分配控件不行吗CString是动态的,为什么我们在定义一个CString后,可以对他户不同长度的值。他的空间应该又一定的限制吧
当用allocate函数分配空间时并不调用构造函数,
用new 时就会调用的。
这个调用包括成员变量的。 给分,给分! 说得对都要给分。
char tring1[20];
char tring2[20];
};
定义以结构体指针
struct List* m_pList=(struct List*)malloc(sizeof(List));
sprintf(m_pList->string1,"%s","asdfads");
就不会有问题了。
我们又回到了那遥远的DOS-C时代,但真的管用
我同意hujun614(胡均)的做法!
因此,要想对CString类的对象进行赋值(或其他)操作必须先初始化(在CString类的构造函数中)
而本例中,CString类对象的构造函数没有被执行(用malloc只是分配空间,只有用new才会再分配空间之后调用其构造函数,此处的构造函数由编译器生成,其内部将会执行CString对象的构造函数)
因為C++ new 一個物件時, 會同時調用建构函數, 但malloc不會, 所以你的list中的兩個CString都可以被認為是未初始化的, 看看以下的例子
以下假設是CString的賦值號重載
void operator = (LPCTSTR s)
{
if (m_lpBuffer != NULL)
delete m_lpBuffer; // * 釋放現有的內存
m_lpBuffer = new TCHAR[strlen(s) + 1];
strcpy(m_lpBuffer, s);
}
就是*的那句出錯了, 因為m_lpBuffer未初始化, m_lpBuffer != NULL, 所以delete它, 就這樣出錯了