Есть ли в программе нелогичные, опасные действия? - C (СИ)
Формулировка задачи:
Программа выводит массив из индексов данного массива, под которыми повторяется максимальное значение. Visual studio выдаёт ConsoleApplication21.exe has triggered a breakpoint. Code::Blocks выдаёт, что прекращена работа программы z.exe. Но в то же время в Pelles C она идеально работает.#include "stdafx.h" и system("pause"); я пишу только в visual studio. И добавку s в scanf_s .
#include "stdafx.h" #include#include int *yu(int*a, int n) { int* b = (int*)malloc(sizeof(int) * 2); int max = a[0]; int k = 1; b[k] = 0; for (int i = 1; i max) { max = a[i]; k = 1; realloc(b, sizeof(int) * 2); b[k] = i; } else { if (a[i] == max) { k++; realloc(b, sizeof(int)*(k + 1)); b[k] = i; } } } b[0] = k; return b; } int main() { int a[10]; int i = 0; for (; i<10; i++) { scanf_s("%d", &a[i]); } int *p = yu(a, 10); for (i = 1; i <= p[0]; i++) { printf("%d", p[i]); } system("pause"); return 0; }
Решение задачи: «Есть ли в программе нелогичные, опасные действия?»
textual
Листинг программы
#define REALLOC( b , s , t ) \ do { \ if( ( t* realloc_tmp = (t*)realloc( b , sizeof( t ) * ( s ) ) ) == NULL ) \ { \ puts("Malloc error!"); \ return EXIT_FAILURE; \ } \ b = realloc_tmp; \ } while (0)