Я выделил динамическую память, используя int * p = new int [size];
Теперь, когда я пытаюсь удалить его, используя delete [] p; Я получаю ошибку сегментации (дамп ядра) при выполнении кода.
Изначально я мог вводить элементы массива динамически, и он работал нормально. Но, после выполнения определенного количества раз, теперь он говорит
ошибка сегментации. У меня есть функция, в которой я выделил память, используя new позже в конце области действия этой функции, которую я включил delete [] p. Я должен включить удаление в основную функцию?
#include<iostream>
using namespace std;
void input(){
int n,d, i= 0, count;
cout<< "number of variables: "<<" ";
cin>>n;
cout<<"enter number of minterms: "<<" ";
cin>>count;
int x = pow(2, n);
int *p = new int[count] ; //dynamic allocation
for(i = 0; i<count; i++)
{
cout<< "enter the minterms in decimal: ";
cin>>d;
p[i] = d;
}
for( i =0; i< count; i++){
cout<<p[i]<<" ";
}
delete [] p; //(Do I need to write delete over here or in the main
//func, Right now I've used it here(i.e,the user defined function.)
cout<<"successfully deallocated";
}
//Main function:
int main(){
int *p = NULL; //Is this required ?
input();
//delete[] p; (Do I need to mention delete over here?)
return 0;
}
number of variables: 4
enter number of minterms: 8
enter the minterms in decimal: 1
enter the minterms in decimal: 2
enter the minterms in decimal: 3
enter the minterms in decimal: 4
enter the minterms in decimal: 5
enter the minterms in decimal: 6
enter the minterms in decimal: 7
enter the minterms in decimal: 8
1 2 3 4 5 6 7 8 successfully deallocated00000000119614428832765154679997521907-10100852163265911961440643276540008000800080004000-1005...<a lot of numbers>...07370419492536907748609097595Segmentation fault (core dumped)