2015-02-03 6 views
-2

в заголовкеВозникли проблемы Инициирование неподписанных Int * Массив

class foo 
{ 
    unsigned int *Indices; 
    unsigned int *func(int var); 
}; 

in CPP  
unsigned int *foo::func(int var) 
{ 
    Indices = new unsigned int[((unsigned)var *3)]; 
    //do math. 
    return Indices; 
} 

при инициализации массива индексов я получаю перерыв внутри malloc.c , что здесь происходит? почему я получаю перерыв?

У меня такое чувство, потому что int var не известно во время компиляции. это верно? Я попробовал также использовать магические числа вместо вара, но проблема остается

+0

все, что вам нужно сделать, это указать целое число в '[]' например. 'new int [3]' –

+0

Я пробовал это. – user3063807

+1

Ваш код выглядит нормально. Попробуйте отправить [MCVE] (http://stackoverflow.com/help/mcve). –

ответ

0

Возможно, вы правы,

это потому, что Int вар

Но проблема скорее в стоимости, но не в тип. Попробуйте проверить var перед памятью распределения. Например:

unsigned int *foo::func(int var) 
{ 
    if (var <= 0) 
    { 
     return NULL; 
    } 
    Indices = new unsigned int[var *3]; 
    //do math. 
    return Indices; 
} 
+0

var - постоянная 4. – user3063807

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

  • Нет связанных вопросов^_^