Benim kodudur: VS2010 bu çalıştırmakC++ Bellek ayırma sorunu
#include <string.h>
int main()
{
int ii = 123;
char str[7] = "";
strcpy(str,"123456");
return 0;
}
, hafıza gibidir altında
ben bellekte cc
eskiden ne merak ediyorum için? Ve cc
'un sayısı nasıl hesaplanır?
Ve MS neden dolum değeri olarak '0xCC' seçti? Çünkü 0xCC, x86 komut setindeki tek bayt kesme noktası talimatıdır. Bu şekilde, yanlışlıkla doldurulmamış belleği çalıştırırsanız, anında bir kesme noktasına ulaşır. –
@Rob Bilmiyordum. :) Sanırım bellek korumaya sahip olduğumuza göre daha az anlamlılık var mı? – Mysticial
@Mysticial: gerçekten değil: yalnızca sayfa düzeyinde çalışır (tüm sayfa yürütülebilir olarak işaretlenemez ve yalnızca CPU, OS ve işlemlerin tümü NX-bit'i etkinleştirmeyi kabul ederse). Ancak, 2KB sayfasından 40 baytlık kod kullanırsanız ne olur? Sayfanın yeniden çalıştırılabilir olarak işaretlenmiş olması, sayfanın geri kalan kısmını yürütülebilir, ancak çöp içermelidir :) – jalf