Ожидаемая ошибка указателя возникает, когда компилятор получает задание в конце функции. Зачем?Почему malloc терпит неудачу?
(Удалены слепки и индекс обозначения из кода, они были там для «отладки» купить, по-видимому завален мой вопрос.)
int createArraySimple(int initialResetCount, int ***array)
{
int sourceTermIndex, driveCurrentIndex, preEmphasisIndex, freqIndex, voltageIndex, slicerIndex, biasIndex;
int dataIndex, dataCount = 3;
*array = malloc(2*sizeof(int**)); // sourceTerm
if (*array == NULL)
return 0;
for (sourceTermIndex=0; sourceTermIndex < 2; sourceTermIndex++)
{
*((*array)+sourceTermIndex) = malloc(2*sizeof(int*)); // drive current
if (*((*array)+sourceTermIndex) == NULL)
return 0;
for (driveCurrentIndex=0; driveCurrentIndex < 2; driveCurrentIndex++)
{
*((*((*array)+sourceTermIndex))+driveCurrentIndex = malloc(2*sizeof(int)); // pre-emphasis
if (*((*((*array)+sourceTermIndex))+driveCurrentIndex) == NULL)
return 0;
}
}
//'initialize elements in array, since if they are not updated, we won't print them
for (sourceTermIndex = 0; sourceTermIndex < 2; sourceTermIndex++)
for (driveCurrentIndex = 0; driveCurrentIndex < 2; driveCurrentIndex++)
for (preEmphasisIndex = 0; preEmphasisIndex < 2; preEmphasisIndex++)
*((*((*((*array)+sourceTermIndex))+driveCurrentIndex))+preEmphasisIndex) = initialResetCount;
return 1;
}
Ничего себе. Это код, как это делает C# очень счастливым местом. Если бы мне пришлось использовать это, я бы, вероятно, использовал один буферный блок и сделал массив [] math самостоятельно, чтобы убедиться, что все сделано правильно. –
ЭТО ПОЛНОСТЬЮ ЗВЕЗД! – nategoose
Человек, просто не отправляйте 'createArrayComplicated'. Я не думаю, что смогу принять это. –