merak ediyorum olmadığını realloc daha küçük (sıfırdan farklı) boyutu ile çağrıldığında bir işaretçi değişmez olduğu C veya C++ standart garanti:yeni boyut daha küçükse işaretçiyi hareket ettirebilir mi?
Temeldesize_t n=1000;
T*ptr=(T*)malloc(n*sizeof(T));
//<--do something useful (that won't touch/reallocate ptr of course)
size_t n2=100;//or any value in [1,n-1]
T*ptr2=(T*)realloc(ptr,n2*sizeof(T));
//<-- are we guaranteed that ptr2==ptr ?
OS kendi başına karar verebilir biz serbest beri Büyük bir bellek bloğu, hafızayı birleştirmek için tüm realloklardan faydalanmak istiyor ve bir şekilde ptr2'yi mi taşıyor?
Bu sayfada daha önce yazıyor ki, "realloc() işlevi, ptr ile gösterilen bellek nesnesinin boyutunu, boyuta göre belirtilen boyuta değiştirir. Nesnenin içeriği, yeni ve daha az olana kadar değişmeden kalır." eski boyutlar: Bellek nesnesinin yeni boyutu, nesnenin hareketini gerektiriyorsa, nesnenin önceki örneğinin alanı boşaltılır. " Harekete hükmetmiyor, ama nispeten olası değil. –
Evet, hala bellekte olan her şeyin hala orada olacağından emin olabilirsiniz, bunu işaretlediğiniz için teşekkürler –