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

posted @ 2019-12-04 14:36  苍洱  阅读(1867)  评论(0编辑  收藏  举报