2013-07-20 5 views
1

Я выделил блок памяти для матрицы. Чем больше в цикле я помню, как явлюсь на линии.
Я получил Необработанное исключение: Доступ к записи о нарушении прав доступа 0x00557148 в цикле _tmain для. Что я не так?динамический malloc для двумерного массива

double **d; 

#define COUNT 10 

int create() 
{ 
    d = (double**) malloc(COUNT * sizeof(double*)); 
    if (!d) 
     return 0; 
    int size = COUNT * sizeof(double); 
    double *_new = (double*) malloc(COUNT * size); 

    if (!_new) 
     return 0; 
    for (int i = 0; i < COUNT; i++) { 
     d[i] = _new; 
     _new += size; 
    } 

    return 1; 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    double *_d; 
    if (create()) { 
     for(int i = 0; i < COUNT; i++) { 
      _d = d[i]; 
      for (int j = 0; j < COUNT; j++) 
       _d[j] = 5; 
     } 
    } else 
     return -1; 

    return 0; 
} 
+0

ли вы '#include '? (Не произносите результат 'malloc'!) – Kninnug

+0

да я сделал. Необработанное исключение в основном цикле для. когда i = 6 – Qwerty

ответ

1

Я уверен, что вам нужно изменить _new += size к _new += COUNT

+0

Ох ... Правильно! спасибо – Qwerty

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