Size: a a a

2020 July 25

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин
Какие именно функции использовать в гдб для дебага стэк оверфлоу?
Ну и если у тебя там рекурсия, то просто изза неё может быть переполнение стека
источник

ПК

Паша Калугин... in supapro.cxx
Ilia Zviagin
Либо покажи кусок кода, либо решай сам и не тарахти.

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
чёза непотребная смесь С  и С++ ?
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
Функция DFS ... чёза стиль такой ?
источник

ПК

Паша Калугин... in supapro.cxx
Ilia Zviagin
чёза непотребная смесь С  и С++ ?
Ну это псевдокод, чтобы не описывать два массива и вложенный фор
источник

AF

Aidar Fattakhov in supapro.cxx
Паша Калугин

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
Я вижу что ты 2 указателя хранишь
источник

ПК

Паша Калугин... in supapro.cxx
Aidar Fattakhov
Я вижу что ты 2 указателя хранишь
Да
источник

AF

Aidar Fattakhov in supapro.cxx
Это не 128 байт
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
Что такое moves ?
источник

ПК

Паша Калугин... in supapro.cxx
Aidar Fattakhov
Это не 128 байт
Структура под ними -- 128 байт
источник

ПК

Паша Калугин... in supapro.cxx
Ilia Zviagin
Что такое moves ?
Массив переходов из текущей клетки, размера 4
источник

ПК

Паша Калугин... in supapro.cxx
Ilia Zviagin
Функция DFS ... чёза стиль такой ?
Не понял, к сожалению
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
Давай код на пастбин, в БОЛЬШЕМ объёме, ссылку в чат.
Это удаляю. Тут мало кода.
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
Мало того, что тут не нужно аллоцировать объекты динамически, так ещё и мешанина С и С++ стилей...
Не malloc надо было бы а NEW, не free а delete, и эти struct на хер не нужны.
и при этом destructuring bind из c++ 17...

Ну ты либо крестик сними, либо трусы надень...
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин

void DFS(struct DFS_arguments *arguments) {
...
for ([next_x, next_y] : moves) {
   if (!arguments->used[next_x][next_y]) {
       arguments->used[next_x][next_y] = 1;
       struct DFS_arguments *new_arguments = malloc(sizeof(struct DFS_arguments)));
       new_arguments->x = new_x;
       new_arguments->y = new_y;
       DFS(new_arguments);
       free(new_arguments);
   }
...
}

Вот то, что делает этот код. К сожалению, скопировать целиком функцию смогу только через час-два.
Тут один хер половины кода нет, нифига не понятно. А вылет из стека точно из-за рекурсии, которая не прекращается вовремя.
MALLOC тут ни при чём.
источник

ПК

Паша Калугин... in supapro.cxx
Ilia Zviagin
Мало того, что тут не нужно аллоцировать объекты динамически, так ещё и мешанина С и С++ стилей...
Не malloc надо было бы а NEW, не free а delete, и эти struct на хер не нужны.
и при этом destructuring bind из c++ 17...

Ну ты либо крестик сними, либо трусы надень...
Я изначально писал на си, в данном примере сделал c++ 17 like decomposition declaration для большей читаемости кода. Изначально это было два фора по двум массивам
источник

ПК

Паша Калугин... in supapro.cxx
Ilia Zviagin
Тут один хер половины кода нет, нифига не понятно. А вылет из стека точно из-за рекурсии, которая не прекращается вовремя.
MALLOC тут ни при чём.
Вы знаете, что такое depth-first traversal?
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин
Вы знаете, что такое depth-first traversal?
да
источник

IZ

Ilia Zviagin in supapro.cxx
Паша Калугин
Я изначально писал на си, в данном примере сделал c++ 17 like decomposition declaration для большей читаемости кода. Изначально это было два фора по двум массивам
Это с++17
источник

ПК

Паша Калугин... in supapro.cxx
Это алгоритм обхода графа в глубину. В качестве графа -- кадр из видео, каждая вершина -- пиксель с координатами (x, y).
источник