struct LINE
{
char securityID[32]; /*!< 证券代码 */
int64_t dateTime; /*!< 日期时间(日期变化)YYYYMMDDhhmmss */
double openPx; /*!< 开盘价 */
double highPx; /*!< 最高价 */
double lowPx; /*!< 最低价 */
double lastPx; /*!< 最新价 */
double avgPx; /*!< 均价 */
int64_t volume; /*!< 成交量 */
double amount; /*!< 成交金额 */
int32_t tradeDay; /*!< 交易日期 */
short lineNo; /*!< 走势序列号 */
virtual ~LINE() {} //就是这行引起崩溃
};
LINE* pLine = new LINE; delete pLine; // 这样释放不会崩溃
vector<LINE*> vLineTmp;
for (int j = 0; j < 300; ++j)
{
LINE* pLine = new LINE;
memset(pLine, 0, sizeof(LINE));
sprintf_s(pLine->securityID, "%d-%d", 0, j);
vLineTmp.push_back(pLine);
}
for (unsigned int i = 0; i < vLineTmp.size(); ++i)
{
delete vLineTmp[i]; // 崩溃
}
vLineTmp.clear();
如果 line结构体带上析构函数,在vector中释放指针将会奔溃。具体原因不知