Size: a a a

2020 August 17

LD

Lyserg Ditel in supapro.cxx
Побитый Кирпич
В С++ тебе не нужно задавать вопрос "как выделить память". Там ты просто создаёшь объект "массив" и он сам выделяет память
Я же вполне и сам в состоянии алокатор для нужных мне задач сделать
источник

AS

Anatoly Shirokov in supapro.cxx
int* matrix = calloc(N*M*sizeof(int));
for(int r = 0; r < N; r++)
for(int c = 0; c < M; c++)
matrix[r*M + c] = 1;
free(matrix);
источник

AS

Anatoly Shirokov in supapro.cxx
Anatoly Shirokov
int* matrix = calloc(N*M*sizeof(int));
for(int r = 0; r < N; r++)
for(int c = 0; c < M; c++)
matrix[r*M + c] = 1;
free(matrix);
Lyserg that's all
источник

TW

Tony Werner in supapro.cxx
Anatoly Shirokov
int* matrix = calloc(N*M*sizeof(int));
for(int r = 0; r < N; r++)
for(int c = 0; c < M; c++)
matrix[r*M + c] = 1;
free(matrix);
Вот, нормальный кот)
источник

ПК

Побитый Кирпич... in supapro.cxx
Lyserg Ditel
Я же вполне и сам в состоянии алокатор для нужных мне задач сделать
Вместо того чтоб решать задачу, делаешь аллокаторы?
источник

LD

Lyserg Ditel in supapro.cxx
Anatoly Shirokov
int* matrix = calloc(N*M*sizeof(int));
for(int r = 0; r < N; r++)
for(int c = 0; c < M; c++)
matrix[r*M + c] = 1;
free(matrix);
Я уже отвечал https://t.me/supapro/728320
источник

LD

Lyserg Ditel in supapro.cxx
Побитый Кирпич
Вместо того чтоб решать задачу, делаешь аллокаторы?
Трачу 5 минут на функцию, которая аллоцирует память под нужную структуру
источник

AS

Anatoly Shirokov in supapro.cxx
Все остальное будем иметь кеш мисс за счет фрагметнарного расположения в хипе. Так ты распложил все элементы в неррерывном участке памяти. А так у тебя каждая строка матрицы разбросана по хипу
источник

ПК

Побитый Кирпич... in supapro.cxx
Lyserg Ditel
Трачу 5 минут на функцию, которая аллоцирует память под нужную структуру
Но твоя задача наверное не в том чтобы алоцировать память?
источник

ПК

Побитый Кирпич... in supapro.cxx
И ты уже далеко не 5 минут потратил)
источник

LD

Lyserg Ditel in supapro.cxx
Anatoly Shirokov
Все остальное будем иметь кеш мисс за счет фрагметнарного расположения в хипе. Так ты распложил все элементы в неррерывном участке памяти. А так у тебя каждая строка матрицы разбросана по хипу
Почему ? Я ровно 1 раз же запрашиваю память
источник

LD

Lyserg Ditel in supapro.cxx
Причем даже не прошу проинициализировать ее, пускай там лежит все что угодно, я плоский вектор у аби запрашиваю sizeof(int*) * M + sizeof(int) * M * N
источник

AS

Anatoly Shirokov in supapro.cxx
Lyserg Ditel
Почему ? Я ровно 1 раз же запрашиваю память
Посмотрел внимательно твой код. Ну что, запишем тебя в наркоманы.
источник

TW

Tony Werner in supapro.cxx
Lyserg Ditel
Причем даже не прошу проинициализировать ее, пускай там лежит все что угодно, я плоский вектор у аби запрашиваю sizeof(int*) * M + sizeof(int) * M * N
Я не совсем понимаю зачем складывать память на указатели и на сам массив
источник

TW

Tony Werner in supapro.cxx
У тебя ведь нет теперь указателей на сами строки
источник

TW

Tony Werner in supapro.cxx
Там какой то мусор
источник

AS

Anatoly Shirokov in supapro.cxx
Посмотри асм для обращения по [][] и по [] и убедись в том, что мы делаем ровно то, что делаем компилятор под капотом
источник

s

std::slavik in supapro.cxx
Anatoly Shirokov
int* matrix = calloc(N*M*sizeof(int));
for(int r = 0; r < N; r++)
for(int c = 0; c < M; c++)
matrix[r*M + c] = 1;
free(matrix);
классический пример, даже на питоне работает
источник

LD

Lyserg Ditel in supapro.cxx
Anatoly Shirokov
Посмотрел внимательно твой код. Ну что, запишем тебя в наркоманы.
Кстати, в моем варианте, так же как и в вашем  1 - free(array) и все
источник

AS

Anatoly Shirokov in supapro.cxx
Lyserg Ditel
Кстати, в моем варианте, так же как и в вашем  1 - free(array) и все
да, но зачем ты выделяешь экстрапамять, потом ее хитрым образом инициализируешь, чтобы иметь [][], который по производительности сравним с нашим линейным [] c вычисленным индексом
источник