vector中数据释放崩溃问题
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中释放指针将会奔溃。具体原因不知