Selam dostlar, uzun zamandır C++ ile uğraşıyorum ama şu bellek yönetimi işini bir türlü tam oturtamadım. Şöyle bir durum var: Dinamik olarak oluşturduğum bir int dizisini std::vector<int> içinde tutuyorum ve program kapanırken delete[] ile silmeye çalışıyorum. Ama Valgrind hâlâ 'definitely lost: 4 bytes' diye rapor veriyor. Kodum şöyle:
```cpp
#include <vector>
#include <iostream>
int main() {
std::vector<int*> vec;
int* ptr = new int(42);
vec.push_back(ptr);
// ... işlemler ...
delete[] ptr; // Burada delete[] kullanıyorum
return 0;
}
```
Ayrıca vector'ün kendisini de temizlemem gerekiyor mu? Yoksa destructor otomatik olarak hallediyor mu? Kafam karıştı, çünkü bazı kaynaklar 'new int' için 'delete' kullanın derken, bazıları 'delete[]' diyor. Hangisi doğru? Bir de vector'ün içindeki pointer'ları tek tek silmek zorunda mıyım? Teşekkürler şimdiden.
```cpp
#include <vector>
#include <iostream>
int main() {
std::vector<int*> vec;
int* ptr = new int(42);
vec.push_back(ptr);
// ... işlemler ...
delete[] ptr; // Burada delete[] kullanıyorum
return 0;
}
```
Ayrıca vector'ün kendisini de temizlemem gerekiyor mu? Yoksa destructor otomatik olarak hallediyor mu? Kafam karıştı, çünkü bazı kaynaklar 'new int' için 'delete' kullanın derken, bazıları 'delete[]' diyor. Hangisi doğru? Bir de vector'ün içindeki pointer'ları tek tek silmek zorunda mıyım? Teşekkürler şimdiden.