删除模板数组时出现分段错误

问题描述 投票:0回答:3

所以我需要创建一个动态大小的数组,其中包含成对的对象,并且我有以下代码:

#include <utility>
#include <iostream>
#include <string>

using namespace std;

int main() {

    cout << "Hey #1" << endl;

    pair<string, int> *array;

    array = new pair<string, int>[4];

    cout << "Hey #2" << endl;

    delete array;

    cout << "Hey #3" << endl;
}

我得到的输出是

Hey #1
Hey #2
Segmentation fault (core dumped)

这意味着在调用delete运算符时出了点问题?

我在这里想念什么?任何帮助,将不胜感激!

c++ templates new-operator delete-operator
3个回答
1
投票

您需要使用运算符删除[]

delete [] array;

-1
投票

当使用new分配对象时,需要使用delete释放它们。用new[]分配对象时,需要用delete[]释放它们。将您的代码更改为:

delete[] array;

-1
投票

删除动态数组时,使用delete []而不是delete删除多个动态分配的数据。希望这能解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.