0Pricing
C++ Academy · Ders

Yığın Ayırma

Otomatik depolamanın nasıl çalıştığını öğrenin

Yığın Ayırma, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Otomatik Depolama

Yerel değişkenler, genellikle yığın olarak adlandırılan otomatik depolamada bulunur. Yürütme kapsamlarına girdiğinde oluşturulur, kapsamdan çıktığında yok edilir.

#include <iostream>

int main() {
    int x = 42;          // on the stack
    double pi = 3.14;    // on the stack
    std::cout << x << " " << pi << "\n";
}

Yığın Büyür ve Küçülür

Her işlev çağrısı, yerel değişkenlerini taşıyan bir yığın çerçevesini yığına ekler. İşlev döndüğünde çerçeve çıkarılır ve yerel değişkenler ortadan kalkar; elle temizleme gerekmez.

#include <iostream>

void greet() {
    int local = 7;          // pushed on call
    std::cout << local << "\n";
}                            // popped on return

int main() { greet(); }

LIFO Sıralaması

Yığın Son Giren, İlk Çıkar ilkesine göre çalışır. En son oluşturulan yerel değişken, kapsam sona erdiğinde ilk yok edilen değişkendir.

#include <iostream>

int main() {
    int a = 1;
    {
        int b = 2;   // created after a
        std::cout << b << "\n";
    }                // b destroyed first
    std::cout << a << "\n";
}

Hızlı ve Ucuz

Yığın ayırma son derece hızlıdır: yalnızca yığın işaretçisini ilerletir. Boş bellek araması veya öbeğin gerektirdiği kayıt tutma işlemleri yapılmaz.

Kapsam Yaşam Süresini Belirler

Bir yığın nesnesi yalnızca bildirildiği blok içinde yaşar. İç içe blokların kendi kapsamları vardır.

#include <iostream>

int main() {
    for (int i = 0; i < 3; ++i) {
        int square = i * i;   // recreated each iteration
        std::cout << square << "\n";
    }
}

Sınırlı Boyut

Yığının sabit ve sınırlı bir boyutu vardır (genellikle birkaç megabayt). Yığında çok büyük diziler ayırmak yığın taşması çökmesine neden olabilir.

// Risky: a large fixed array on the stack
int big[1000000];   // may overflow the stack

Yığın Adresi Döndürmek Bir Hatadır

Yerel bir değişkene işaretçi veya başvuru döndürmeyin. İşlev döndüğünde bu depolama alanı ortadan kalkar ve işaretçi geçersiz bir adresi gösterir.

int* bad() {
    int local = 5;
    return &local;   // BUG: local dies here
}

Büyük Nesneleri Başvuru ile Aktarma

Büyük nesneleri yığına kopyalamak israftır. Yığın kullanımını düşük tutarken kopyalamayı önlemek için onları const& ile aktarın.

#include <string>

void print(const std::string& s) {  // no copy
    // use s
}

Yığın Nesneleri için delete Gerekmez

Ömürlerini derleyici otomatik olarak yönettiği için yığın değişkeni üzerinde asla delete çağırmamalısınız.

#include <iostream>

int main() {
    int n = 10;
    // delete &n;   // ERROR: not heap-allocated
    std::cout << n << "\n";
}

Yığındaki Diziler

Sabit boyutlu ve uzunluğu bilinen diziler yığında yaşar; kapsam sona erdiğinde otomatik olarak serbest bırakılır.

#include <iostream>

int main() {
    int values[3] = {10, 20, 30};
    for (int v : values) std::cout << v << "\n";
}

Yığını Ne Zaman Tercih Etmeli

Derleme zamanında boyutu bilinen küçük ve kısa ömürlü nesneler için yığını tercih edin. Yığın daha hızlıdır ve kendini temizler; gerçekten gerekmedikçe öbeğe başvurmayın.

Hızlı Kontrol

Yığın için bellek ayırma konusundaki anlayışınızı sınayın.

Özet

Yığın için bellek ayırmanın, kapsama bağlı otomatik depolama kullandığını öğrendiniz: değişkenler kapsama girerken oluşturulur ve çıkarken LIFO sırasıyla yok edilir. Bu yöntem hızlıdır, kendini temizler ve boyut açısından sınırlıdır. Yerel değişkenlerin adreslerini döndürmeyin ve yığın nesneleri üzerinde asla delete kullanmayın.

Sıkça Sorulan Sorular

“Yığın Ayırma” dersi ücretsiz mi?

Evet — “Yığın Ayırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Yığın Ayırma” dersinde ne öğreneceğim?

Otomatik depolamanın nasıl çalıştığını öğrenin C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Yığın Ayırma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yığın Ayırma
  2. new/delete ile Öbek Ayırma
  3. Nesne Ömrü
  4. Yaygın Bellek Hataları
← C++ Academy Sayfasına Dön