В вашем коде есть синтаксические ошибки: у вас отсутствует точка с запятой, а long[] col;
недопустим C или C ++.
Дано:
struct ARRAY2D
{
long *col;
};
ARRAY2D *array;
int numRows = 800000;
int numCols = 300;
array = (ARRAY2D*) malloc(numRows * numCols * sizeof(long));
вы потенциально выделяете неправильный объем памяти: sizeof(long)
следует заменить на sizeof *array
или sizeof(ARRAY2D)
.
Предполагая, что вы получили правильную сумму, вы можете индексировать array
как: array[i]
, для i
в диапазоне [0, numRows*numCols)
. Вы не выделили памяти для col
членов любого из array[i]
, поэтому вы не можете индексировать в col
любого из них. Поэтому вы используете array[row].col[colNum]
неправильно, учитывая схему размещения, которую вы опубликовали.
Возможно, это поможет, если вы разместите какой-нибудь реальный код, который работает.