Динамический 2d массив не создается должным образом - PullRequest
0 голосов
/ 18 марта 2011

Я хочу создать динамический 2d массив по функциям, но, похоже, что-то не так. Я получаю сообщение об ошибке, когда хочу что-то добавить в него.

Error

Необработанное исключение в 0x003a19c8 в p01.exe: 0xC0000005: нарушение прав доступа место записи 0xcdcdcdcd.

CreateDynamicArray ()

short int** CreateDynamicArray(int row, int col)
{
    // Creating variable
    short int** dynamicArray;

    // Creating rows
    dynamicArray = (short int**)malloc(row * sizeof(short int*));

    // Going trough every row and creating columns for them
    for (int i = 0; i < row; i++)
    {
        dynamicArray[row] = (short int*)malloc(col * sizeof(short int));
    }

    // Returning created array
    return dynamicArray;
}

Основной ()

// Creating it
dynamicArray = CreateDynamicArray(row, col);

// Filling up with random numbers
for (i = 0; i < row; i++)
{
    randomNumber = rand() % 20;
    dynamicArray[i][n] = randomNumber; // Here it throws me exception
    for (n = 0; n < col; n++)
    {
        randomNumber = rand() % 20;
        dynamicArray[i][n] = randomNumber;
    }
}

image

P.S. Да, это в некотором роде домашнее задание, но мне все еще нужна помощь по этому вопросу:)

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Помимо сказанного Gunner, переменная n используется для цикла, но в строке, в которую выдается исключение, также используется переменная n. Я думаю, у вас есть логическая ошибка:)

2 голосов
/ 18 марта 2011

изменить строка на i .

short int** CreateDynamicArray(int row, int col)
{
    // Creating variable
    short int** dynamicArray;

    // Creating rows
    dynamicArray = (short int**)malloc(row * sizeof(short int*));

    // Going trough every row and creating columns for them
    for (int i = 0; i < row; i++)
    {
        dynamicArray[i] = (short int*)malloc(col * sizeof(short int));
    }

    // Returning created array
    return dynamicArray;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...