`const int * const int` инициализация с функцией - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу определить постоянный массив констант на каждом узле MPI, используя C ++ 03.M_chunk_sizes определяет размер матрицы, которая будет передана другим узлам и не будет изменена во время выполнения.

int* define_chunk_sizes( int S, int world) {

    int out[world];

    double quotient = static_cast<double> (S) / world;
    int maj = ceil(quotient);

    for (int i =0; i < world - 1; i++)
      out[i] = maj;

    out[world-1] = maj + (S - maj*world);

    return out;
}

int main() {
    const int M = 999; // rows
    int world_size = 4;
    const int* const M_chunk_sizes = define_chunk_sizes(M, world_size);
}

Но я получаю warning: address of stack memory associated with local variable 'out' returned [-Wreturn-stack-address] return out;.

Что такоеправильный способ сделать это?

1 Ответ

0 голосов
/ 19 декабря 2018

Функциональные локальные переменные (переменные стека) выйдут из области видимости и срока службы после возврата из функции.Вы используете операторы динамического управления памятью, поэтому выделите память для out, используя

new

, и восстановите память, используя

delete

как только вы закончите с этим.

...