yukarda dikktimizi çeken farklı birşey nothrow bu işemi yapacak olan bu eğer yeterli veya uygun alan yoksa NULL döndürür yani bu durumda po = 0x0000000 olur
Not: Hatayı görebilmek için(32 bit 4 GB Ram'de denemiştir) "536870911" değerini giriniz eğer "536870912" girerseniz derleyici Run-Time hata verir(eski derleyicilerde hatayı alamayabilirsiniz).
sizeof()
verilen değişkenin yapının, sınıfın vs. kaç byte olduğunu döndürür örnek:
Kod:
int dene = 56;
int boyut = sizeof(dene);
yukarda dene değişkeni int türü odluğundan 4 byte'dir. boyut değişkenine sizeof(dene); 'yi eşitlemişiz sizeof dene değişkeninin hafızada kaç byte yer kapladığını döndürür yani dene int türünden olduğu için 4 byte dir sizeof'ta 4 döndürecektir ve boyut değişkeni 4 olacaktır.
birde diziler için bakalım (diziler alt yapıda aslında bir göstericidir):
Kod:
int dene[5];
int toplamBoyut = sizeof(dene);
int turBoyutu = sizeof(*dene);
yukarda "toplamBoyut" değişkenine 20 atanır çünkü dene dediğimizde dene'nin gösterdiği adresteki verilerin toplam boyutu döner.
"turBoyut" değişkenine ise 4 atanır çünkü dene int türündendir.
memcpy()
kısacası değişken, dizi vs. kopyalamaya yarar.
Not: bu şekilde bir işiniz çıkarsa yani kopyalama gereksinimi duyarsanız direk bu fonksiyonu kullanın emin olun ki sizin yapacağınız döngüden kat kat daha hızlıdır sonuçta bu işi bilen profesyonel adamlar tarafından yapılıyor:
kullanımı:
Kod:
memcpy(yapıştırılacak_alan, kopyalanacak_alan, kaç_byte'ı_kopyalanacak);
bir örnekle daha iyi anlayalım:
Kod:
int main()
{
char dene[50] = "deneme yazisi";
char yeni[50];
memcpy(yeni, dene, sizeof(*dene));
cout << "dene..: " << dene << endl;
cout << "yeni..: " << yeni << endl;
system("PAUSE");
return 0;
}
Çıktısı:
Kod:
dene..: deneme yazisi
yeni..: deneme yazisi
gördüğümüz gibi dene'nin gösterdiği yerdeki verileri yeni'ye kopyalamış.
yani memcpy fonksiyonuna dedik ki "yapıştırılacak alan: yeni, kopyalanacak olan: dene, 50 byte(sizeof(dene))'ı kopyalanacak."