Показать сообщение отдельно

  #5  
Старый 20.01.2010, 21:45
cupper
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
С нами: 9963746

Репутация: 180


По умолчанию

Что произойдет если сделать так
A - указатель на динамически созданный массив размерности X
A = (int*) realloc(A, Y*sizeof(int));
Если Y < X.
Уменьшиться размер массива и затрется последний элемент (что собсно и нужно) или что то неопределенное ?

Вот то что я хочу сделать
Код:
int main(){
	int *mas = new int [5];
	int mas1[]={1,2,3,4,5};
	for (int i=0; i<5; i++)
		mas[i] = mas1[i];
	mas = (int*) realloc(mas, 3*sizeof(int));
	for (int i=0; i<5; i++)
		cout<<mas[i]<<" ";
	cout<<endl;
}
Оно выводит 1 2 3 4 5
Но я не могу проверить выводит оно это потому что:
1. Память не успела затереться но за границу массива мы уже вышли
2. Граница массива осталась на прежнем месте

Последний раз редактировалось cupper; 20.01.2010 в 22:13..
 
Ответить с цитированием