logo

Zmienne dynamiczne. Operatory new i delete


Dwa przykładowe programy

#include<cstdlib>
#include<iostream>


using namespace std;


int main(int argc, char *argv[])
{
	int * wskX = new int;   // Rezerwacja pamięci dynamicznej (na stercie)
	                                     // i zapamiętanie adresu we wskaźniku wskX

	*wskX = 3;                   //Odwołanie do pamięci wskazywanej
	cout << *wskX << endl;

	delete wskX;                 // Zwolnienie pamięci dynamicznej
	wskX = NULL;                // Przypisanie adresu pustego

//	*wskX = 6;   BLAD! Wskaznik nie wskazuje na nic!
//	cout << *wskX << endl;

	system("pause");
	return 0;
};
#include<cstdlib>
#include<iostream>


using namespace std;


int main(int argc, char *argv[])
{
	int * tabX = new int[20];    //Tablica 20 zmiennych int została utworzona na stercie
	                                            // (dynamiczna tablica)
	                                            // To coś innego niż ...:
	// int  X[20];                                    // Tablica 20 zmiennych int
	//int * wskX[20];                            // Dwadzieścia wskaźników do int (tablica wskaźników)

	for (int i=0; i<20; ++i)
		tabX[i] = i;

	for (int i=0; i<20; ++i)
		cout << tabX[i] << " ";
	cout << endl;
	delete [] tabX;                     // Zwolnienie pamięci zajmowanej przez tablicę

	int n;
	cout << "Podaj liczbe elementow tablicy dynamicznej: " ;
	cin >> n;
	tabX = new int[n];               // Liczba elementow ustalona w czasie dzialania programu

	for (int i=0; i<n; ++i)
		tabX[i] = i;

	for (int i=0; i<n; ++i)
		cout << tabX[i] << " ";
	cout << endl;

	delete [] tabX;                     //Zwolnienie pamięci zajmowanej przez tablicę

	system("pause");

	return 0;
};

Więcej można znaleźć na stronach:

  1. http://www.java2s.com/Tutorial/Cpp/0220__Pointer/0020__pointer.htm
  2. http://kursy.ddt.pl/?LessonId=111

logo