我在Windows7 Professional(32位)上使用C ++ Builder XE4。
我对TStringList有疑问;
我想要做的是知道TStringList变量是否是新的,以防止Add()方法到非新的TStringList;
我认为检查NULL可能有效,但事实并非如此。
TStringList *list;
// list = new TStringList(); // someone commented out by mistakes
if (list == NULL) {
ShowMessage(L"NULL");
} else {
ShowMessage(L"not empty");
}
return;
上面的代码显示“非空”对话框。
检查新建或未新建的TStringList的标准方法是什么?
答案 0 :(得分:1)
c / c ++很常见的是将指针初始化为NULL,并且只要它们没有指向有效的东西就让它们为null。
因此,你的if语句是一个非常普通且适当的代码。
但是,这确实需要初始化变量。
除非在全局/文件范围内声明,否则行:TStringList * list;没有将变量初始化为任何特定值 - 这使得它指向随机废话。
您需要将其更改为TStringList * list = NULL; (或者类似的,有些人不喜欢“NULL”)