C++ New Kutuphanesi Dinamik Bellek Ileri Duzey (Kisa) (1 İzleyici)

Nishimura

Üye
Katıldı
Mesajlar
29
Yaşadığın yer
Moskova
Kredi
0

Merhaba arkadaslar bugun ileri duzey new kutuphanesinin yane dinamik bellegi baskasinin adresini alarak static cevirmesini ve nasil kullanildigini ve nasil olusturuldugunu gosterecegim.. okulda 3-4 siniflar.Yapilandirmalarda gosterilmektedir..


NEDEN ILERI DUZEY (NEW) ?

EVET ARKADASLAR KISACA ANLATIYIM.. NORMALDE NEW POINTERLERDE DINAMIK BELLEK YERINE KULLANILIR.. FAKAT BURDA HEPSINI DEGIL KISA OLARAK.. TANIMINI YAPACAGIM.. BASKA BIR BIR OTOMATIK DEGISKENIN ADRESINI ALARAK BUDA (STATIC) OLMUS OLUYOR.. O ADRESI KULLANIP KENDISINIDE STATIC HALE DONUSTURMUS OLUYOR.. BIR NEVI BIRISNIN ADRESINI ODUNC ALMIS GIBI.. FAKAT BUNU HERZAMAN KULLANIYOR.. DELETE ADRES STATIC DEGISKENE AIT OLDUGU ICIN SILINMIYOR... BIDE BAHSETTIGIM STATIC TANIMLAMA STATIC DEGIL.. DEGISKENIN TURU MANASINDA DEGIL. (ICERIGINDEN) DOLAYI YANE SILINMEYEM.. KISACA BU KADAR BU KONUDA ARASTIRMADA YAPILABILIR.. VE ISTENILDIGINDE SORUDA SORABILIRSINIZ..


Kod:
#include <iostream>
#include <new> // eklemeyi unutmayin..!!
using namespace std;

const int BUF = 512;
const int N = 5;
char tampon[BUF];
int main()
{
	double *pd1, *pd2;
	int i;
	cout << "Yeni degiskenleri cagiriyorum..\n";
	pd1 = new double[N];
	pd2 = new (tampon) double[N]; // tampon adresi aliyor burda ve pd2 static donusuyor..!!
	for(i = 0; i < N; i++)
		pd2[i] = pd1[i] = 1000 + 20.0 * i;
	cout << "Memory adres:\n" << "Dinamik: " << pd1
		<< " Static: " << &tampon << endl;
	cout << "Icindeki adresler ve degerler:\n";
	for(i = 0; i < N; i++)
	{
		cout << pd1[i] << " ve " << &pd1[i] << "; ";
		cout << pd2[i] << " ve " << &pd2[i] << endl;
	}
	cout << "\nYeni degiskenleri cagiriyorum ve ayni adresten devam ediyorum:\n";
	double *pd3, *pd4;
	pd3 = new double[N];
	pd4 = new (tampon) double[N];
	for(i = 0; i < N; i++)
		pd4[i] = pd3[i] = 1000 + 40.0 * i;
	cout << "Icindeki adresler ve degerler:\n";
	for(i = 0; i < N; i++)
	{
		cout << pd3[i] << " ve " << &pd3[i] << "; ";
		cout << pd4[i] << " ve " << &pd4[i] << endl;
	}
	
	cout << "\nYeni degiskenleri cagiriyorum..Fakat ayni adresi (40 byte ilerisi olarak ayarlaniyor.)\n";
	delete[] pd1;
	
	pd1 = new double[N];
	pd2 = new (tampon + N * sizeof(double)) double[N];
	for(i = 0; i < N; i++)
		pd2[i] = pd1[i] = 1000 + 60.0 * i;
	cout << "Icindeki adresler ve degerler (buradaki adres 40 byte ileriden basliyor):\n";
	for(i = 0; i < N; i++)
	{
		cout << pd1[i] << " ve " << &pd1[i] << "; "; 
		cout << pd2[i] << " ve " << &pd2[i] << endl; 
	}
	delete[] pd1;
	delete[] pd3;

	system("pause");
}


Umarim kisaca anlatmisimdir. Sorunuz olursa sorunuz .!!


"TARAFIMCA EKLENEN SCRIPTLER BANA AIT OLUP KOPYALANMASI ANINDA (ALINTI) IBARESI EKLENMESI RICA OLUNUR"

 

Bu konuyı kimler okuyor

Benzer konular

Top