Pointer
- Flutter kursu
- Uzman seviye
- Ders 24/39
- 4 dk
Pointer<T> ile C belleğini yönetmeyi öğrenirsin.
Pointer
Pointer<T>, C tarafındaki bir bellek adresini Dart'ta temsil eder. allocate ile bellek ayrılır, free ile geri verilir. Pointer<Int32> bir int, Pointer<Float> bir float taşır.
final ptr = calloc.allocate<Int32>(sizeOf<Int32>());
ptr.value = 42;
print(ptr.value);
calloc.free(ptr);allocate ve free
Bellek allocate ile alınır, free ile bırakılır. Modern ffi'de calloc veya malloc ile ayrılır ve free edilir. Bellek sızıntısını önlemek için her allocate'e karşılık bir free gerekir.
Uygulama Pointer oluştur
main'de Pointer<Int32>.fromAddress(0) ile bir Pointer oluştur ve address değerini yazdır.
Başlangıç kodu
import 'dart:ffi';
void main() {
// Int32 türünde bir Pointer oluştur, adresi 0 olsun
// adresini yazdır
}Örnek çözüm
import 'dart:ffi';
void main() {
final ptr = Pointer<Int32>.fromAddress(0);
print(ptr.address);
}Beklenen çıktı
0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Pointer<T> neyi temsil eder?
- HTTP isteğini
- Dart nesnesini
- C bellek adresini Doğru cevap
- Widget ağacını
Açıklama: Pointer<T>, C tarafındaki bir bellek adresini Dart'ta sarmalar; Dart nesnesi, widget ve HTTP ffi dışındaki kavramlardır.
2 calloc.allocate çağrısı
final ptr = calloc.____<Int32>(sizeOf<Int32>());
final ptr = calloc.allocate<Int32>(sizeOf<Int32>());
Açıklama: calloc.allocate bellek ayırır; malloc ayrı bir ayırıcı nesnedir (calloc.allocate değil), get ve create ise calloc üzerinde geçerli metodlar değildir.
3 Pointer eşleşmeleri
| Kavram | Anlamı |
|---|---|
Pointer |
C bellek adresi |
allocate |
Bellek ayırma |
free |
Belleği bırakma |
calloc |
Temizleyen ayırıcı |