- Mesaj
- 1.260
- Çözümler
- 45
- Beğeni
- 1.798
- Puan
- 1.339
- Ticaret Puanı
- 0
!!! Uyarı !!! Benim yazdığım hiçbir şeye güvenmeyin veya gözünüz kapalı kaynak kodunuzu değiştirmeyin. Ben yazılımcı değilim.
Yapay zekaya çok fazla Stack bellek kullanmanın neden kötü kod pratiği olduğunu sordum, dedi ki:
Yapay zeka çıktısı:
TR:
⚠️ 82.040 Bayt Yığın Kullanmanın Kötü Bir Uygulama Olmasının Nedeni
🧠 1. Sınırlı Yığın Boyutu (Genellikle Windows'ta 1 MB)
Bir Windows programındaki her iş parçacığının varsayılan yığın boyutu 1 MB'tır (açıkça artırmadığınız sürece). Yani:
~82 KB kullanmak = tüm yığının ~%8'i.
Bu tehlikelidir, özellikle de birden fazla iş parçacığının kendi yığınını aldığı yinelemeli işlevlerde veya çok iş parçacıklı programlarda.
Daha kötüsü, bu büyük bir parça kullanan tek işlev olmayabilir; birden fazla büyük yığın işlevi hızla yığın taşması çökmelerine yol açabilir.
🔥 2. Yığın Taşması = Sessiz veya Hata Ayıklaması Zor Çökmeler
Başarısız olduklarında nullptr döndüren yığın tahsislerinin (new/malloc) aksine, yığın taşmaları genellikle anında çökmeye neden olur (genellikle bir hata ayıklayıcı eklenmediği sürece yararlı bir mesaj olmadan).
Belirtiler:
İşlev çağrıları sırasında rastgele çökmeler.
Yalnızca büyük resimler veya varlıklarla gerçekleşir.
Debug'da çalışır ancak Release'de çöker (farklı yığın boyutları veya optimizasyonlar nedeniyle).
💾 3. Yığın Küçük, Kısa Ömürlü Veriler İçindir
Yığın şunlar için tasarlanmıştır:
İşlev parametreleri
Dönüş adresleri
Küçük yerel değişkenler
Büyük tamponlar (256×256 resimler gibi) gigabaytlarca veri tutabilen ve dinamik olarak yönetilen yığın için daha uygundur.
EN:
⚠️ Why Using 82,040 Bytes of Stack Is Bad Practice
🧠 1. Limited Stack Size (Typically 1 MB on Windows)
Each thread in a Windows program has a default stack size of 1 MB (unless you explicitly increase it). So:
Using ~82 KB = ~8% of the entire stack.
This is dangerous, especially in recursive functions or multi-threaded programs, where multiple threads each get their own stack.
Worse, this may not be the only function that uses a large chunk — multiple large-stack functions can quickly lead to stack overflow crashes.
🔥 2. Stack Overflow = Silent or Hard-to-Debug Crashes
Unlike heap allocations (new/malloc), which will return nullptr if they fail, stack overflows usually cause an instant crash (often with no helpful message unless a debugger is attached).
Symptoms:
Random crashes during function calls.
Only happens with large images or assets.
Works in Debug but crashes in Release (due to different stack sizes or optimizations).
💾 3. The Stack Is for Small, Short-Lived Data
The stack is designed for:
Function parameters
Return addresses
Small local variables
Large buffers (like 256×256 images) are better suited for the heap, which can hold gigabytes of data and is dynamically managed.
Nasıl yapılır:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
Böylece Stack'teki en az 180,396byte(176kb) veriyi Heap'e taşıdık.