2011-03-18 7 views
0

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

Ошибка

Unhandled exception at 0x003a19c8 in p01.exe: 0xC0000005: Access violation writing location 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. Да, это несколько из домашних заданий, но я по-прежнему нужна помощь в Om этот вопрос :)

ответ

2

изменения ряд к я.

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; 
} 
+0

Ха-ха, спасибо. Это было довольно ... глупо от меня :) – sed

+0

@Qmal: Ваш прием :) –

+0

ваш листок malloc избыточен, это C++-материал – user411313

2

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

Смежные вопросы