Есть ли в программе нелогичные, опасные действия? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа выводит массив из индексов данного массива, под которыми повторяется максимальное значение. Visual studio выдаёт ConsoleApplication21.exe has triggered a breakpoint. Code::Blocks выдаёт, что прекращена работа программы z.exe. Но в то же время в Pelles C она идеально работает.
#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; imax) {
            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;
}
#include "stdafx.h" и system("pause"); я пишу только в visual studio. И добавку s в scanf_s .

Решение задачи: «Есть ли в программе нелогичные, опасные действия?»

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)

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы