Как я могу правильно установить все элементы массива на отрицательное значение? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть программа, в которой он запрашивает у пользователя определенное количество элементов и создает массив, а затем после инициализации всех элементов равным нулю, теперь он устанавливает все элементы в отрицательное значение -1. У меня ошибка сегментации, и я думаю, что это связано с моим кодом для установки элементов в -1. Что было бы лучше для установки всех элементов на отрицательный? И если возможно, объясните почему.

#include <cstddef>
#include <iostream>
using namespace std;

int main(int argc, char * argv[]) {  

    cout << endl << "A dynamic array creation program" << endl;

    size_t length = 0;  
    int * intArray = nullptr;  

    cout << endl << "Input number of elements: ";  
    cin >> length;  

    cout << endl << "Allocating memory to create the dynamic array" << endl;  
    intArray = new int [length];  

    cout << endl << "Initializing all elements to 0" << endl;  
    for (size_t i=0; i<length; ++i)    
        intArray[i] = 0;  

    cout << endl << "Deallocating the dynamic array" << endl;  
    delete [] intArray;  
    intArray = nullptr; 

    cout << endl << "Setting all elements to negative values" << endl;  
    for (size_t i=0; i<length; ++i)    
        intArray[i] = -1;  
    return 0;
}

1 Ответ

4 голосов
/ 26 марта 2020

после инициализации всех элементов в ноль, теперь он устанавливает все элементы в отрицательное значение -1. ​​

Он делает что-то еще после установки всех элементов в ноль. Удаляет массив. Элементы больше не существуют в точке, где вы присваиваете -1. ​​

Как лучше было бы установить все элементы на отрицательные?

Делать это до массив удаляется.

И, если возможно, объясните, почему.

Потому что, если вы попытаетесь получить доступ к объектам вне их времени жизни, поведение программы будет неопределенным.

...