C++ 'da vektörler üzerinden ekleme sıralama yapmaya çalışıyorum ama benim ./a.out bunu döndürür: *. \ Inertion'da hata: çift serbest veya bozulma (dışarı): 0x000000000154fc20 *Double Free veya Corruption (out): C++ içinde 0x000000000154fc20
Bunun nedenini bilmiyorum, bunun gibi başka sorunlar gördüm ve her zaman kodla ilgili, kodumdan satın al, sorunun ne olduğunu bilmiyorum.
j=i-1;
while(j>=0 && v[j]>key){
v[j+1] = v[j];
j--;
}
v[j]=key;
Tanım olarak, while
döngü zaman sona erer, için bu kod snippet'inde
#include<iostream>
#include<vector>
using namespace std;
void insertion(vector<int> v){
int tam = v.size();
int key,j,i;
for(i=1; i<tam; i++){
key = v[i];
j=i-1;
while(j>=0 && v[j]>key){
v[j+1] = v[j];
j--;
}
v[j]=key;
}
}
void print(vector<int> v){
cout<<endl;
for(int i = 0; i<v.size(); i++){
cout<<i+1<<".\t"<<v[i]<<"\n";
}
}
int main(){
cout<<"----------------INSERTION SORT----------------\n\n";
cout<<"\nPlease, fill the vector: \n\n";
vector<int> v;
int a;
bool response = true;
while(response){
cout<<"\nEnter your number: ";
cin>>a;
v.push_back(a);
cout<<"Another?(1/0): ";
cin>>response;
cout<<endl;
}
insertion(v);
print(v);
return 0;
}
"ve kod olan hep" - evet, öyle. –
hata ayıklayıcısını kullanmayı öğrenmek –
Valgrind burada yardım edecek. -g ile derleyin ve valgrind yapın ./executable – PYA