Форум программистов, компьютерный форум CyberForum.ru

Отрицательный размер массива - C++

Восстановить пароль Регистрация
 
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.07.2012, 16:16     Отрицательный размер массива #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "russian");
 
    int arrSize;
    int *ptr;
 
    cout << "Введите размер массива: ";
    cin >> arrSize;
 
    ptr = new int[arrSize];
 
    delete [] ptr;
 
 
    system("pause");   // во время выполнения не доходит до этой строчки
    return 0;
}
Ради интереса ввел отрицательное число. Понятно что размер массива не может быть меньше нуля.
Хочеться знать что происходит в программе когда пользователь введет отрицательный размер массива? И опасно ли это?
Миниатюры
Отрицательный размер массива  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2012, 16:16     Отрицательный размер массива
Посмотрите здесь:

Первый отрицательный и минимальный эл массива C++
C++ Удалить из массива последний отрицательный элемент.
В двухмерном массиве найти минимальный, отрицательный элемент массива C++
Поменять местами максимальный и последний отрицательный элементы массива C++
Ввести размер массива с клавиатуры и передать этот размер в конструктор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
21.07.2012, 16:28     Отрицательный размер массива #2
По стандарту new[] принимает size_t, который беззнаковый, так что он просто попросит много памяти.
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.07.2012, 16:41  [ТС]     Отрицательный размер массива #3
Цитата Сообщение от NoMasters Посмотреть сообщение
попросит много памяти
Значит массив все таки будет создаваться, просто очень большого размера?
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
21.07.2012, 16:46     Отрицательный размер массива #4
Да
C++
1
2
3
4
5
6
#include <iostream>
int main()
{
        int i = -1;
        std::cout << (std::size_t)i << std::endl;
}
у меня выдает 18446744073709551615
Yandex
Объявления
21.07.2012, 16:46     Отрицательный размер массива
Ответ Создать тему
Опции темы

Текущее время: 01:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru