所以我需要创建一个动态大小的数组,其中包含成对的对象,并且我有以下代码:
#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
运算符时出了点问题?
我在这里想念什么?任何帮助,将不胜感激!
您需要使用运算符删除[]
delete [] array;
当使用new
分配对象时,需要使用delete
释放它们。用new[]
分配对象时,需要用delete[]
释放它们。将您的代码更改为:
delete[] array;
删除动态数组时,使用delete []而不是delete删除多个动态分配的数据。希望这能解决您的问题。