Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
10 / 7 / 1
Регистрация: 08.10.2015
Сообщений: 307
1

Process returned -1073741819 0xc0000005

05.04.2017, 18:40. Просмотров 5312. Ответов 4
Метки нет (Все метки)

Здравствуйте!
При выполнении любой из двух функций возникает ошибка.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void polusum(double **a,double *mas,int row,int col)
{int i=1,j=0;
    mas = (double *)malloc(col*sizeof(double));
    for(j=0;j<col;++j)
    {
        mas[j]=1.0;
        for(i=1;i<row-1;++i)
            if (a[i][j]>(a[i][j]+a[i][j])/2.0)
            {
                mas[j]=0.0;
                printf("%d",i);
                break;
            }
    }
}
 
void binmatrix(double **a,int row,int col,int p)
{int i,j;
    if (maxarr(a,row,col)-minarr(a,row,col)>p)
        for(i=0;i<row;++i)
            for(j=0;j<col;++j)
                if (a[i][j]>0.0)
                    a[i][j]=1.0;
                else
                    a[i][j]=0.0;
}
Подскажите, пожалуйста, где ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2017, 18:40
Ответы с готовыми решениями:

Код возврата -1073741819 = 0xC0000005 (исключение, нарушение доступа к памяти) в приложении "калькулятор"
Есть программа калькулятор и в ней в случае нехватки памяти выводится соответствующая ошибка...

Ошибка Process returned
#include &lt;stdio.h&gt; int stepen(int x, int n){ int i = n, k = 1; for(i;i != 1; i--){ ...

Process returned -1073741819 (0xC0000005)
Пишу небольшую игрушку на sfml, сделал динамическую прорисовку карты, чтобы при создании больших...

Process returned -1073741819 0xc0000005
process returned -1073741819 0xc0000005 Не могу понять в чем проблема void func4() { using...

4
Заблокирован
05.04.2017, 19:10 2
Весь минимальный код, который падает в студию.
0
10 / 7 / 1
Регистрация: 08.10.2015
Сообщений: 307
05.04.2017, 19:19  [ТС] 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
void vvodmas(double **arr,int *row,int *col);
void writemas(double **arr3,int row,int col);
int vvodi(int min,int max);
double vvodd(double min,double max);
void polusum(double **a,double *mas,int row,int col);
 
int main()
{int i,row,col;
    double **arr,*mas;
   setlocale(LC_ALL,"RUS");
                vvodmas(arr,&row,&col);
                polusum(arr,mas,row,col);
 
    return 0;
}
 
void polusum(double **a,double *mas,int row,int col)
{int i=1,j=0;
    mas = (double *)malloc(col*sizeof(double));
    for(j=0;j<col;++j)
    {
        mas[j]=1.0;
        for(i=1;i<row-1;++i)
            //if ((a[i][j])>((a[i-1][j]+a[i+1][j])/2.0))
            if (a[i][j]>(a[i][j]+a[i][j])/2.0)
            {
                mas[j]=0.0;
                printf("%d",i);
                break;
            }
    }
}
 
void vvodmas(double **arr,int* row,int *col)
{int i,j;
    printf("Введите количество строк массива\n");
    *row=vvodi(1,100);
    arr=(double**)malloc((*row)*sizeof(double*));
    printf("Введите количество столбцов массива\n");
    *col=vvodi(1,100);
    for(i=0;i<*row;++i)
    arr[i] = (double *)malloc((*col)*sizeof(double));
    printf("Для заполнения масссива вручную нажмите 1, компьютером - 2\n");
    switch(vvodi(1,2))
    {
        case 1:
                for(i=0;i<*row;++i)
                for(j=0;j<*col;++j)
                arr[i][j]=vvodd(-100.0,100.0);
            break;
        default:
            for(i=0;i<*row;++i)
            for(j=0;j<*col;++j)
                arr[i][j]=rand()%100-rand()%100;
            writemas(arr,*row,*col);
            break;
    }
}
 
void writemas(double **arr3,int row,int col)
{int i,j;
        for(i=0;i<row;++i)
        for(j=0;j<col;++j)
            printf("a[%d][%d]= %.3lf %c",i,j,arr3[i][j], ((j==col-1)||((j+1)%3==0))?'\n':' ');
}
 
int vvodi(int min,int max)
{
    int v;
    fflush(stdin);
    //extern int min;extern int max;
    while(scanf(" %d", &v)!=1||v<min||v>max)
    {
    fflush(stdin);
    if (v<min||v>max)
        printf("Допустимый диапазон значений от %3d до %3d\nПовторите ввод\n",min,max);
    else
        printf("Некорректно введено число\nПовторите ввод\n");
    }
    return v;
}
 
double vvodd(double min,double max)
{
    double v;
    fflush(stdin);
    //extern int min;extern int max;
    while(scanf(" %lf", &v)!=1||v<min||v>max)
    {
    fflush(stdin);
    if (v<min||v>max)
        printf("Допустимый диапазон значений от %.3lf до %.3lf\nПовторите ввод\n",min,max);
    else
        printf("Некорректно введено число\nПовторите ввод\n");
    }
    return v;
}
0
Заблокирован
05.04.2017, 19:27 4
Лучший ответ Сообщение было отмечено HitGirl как решение

Решение

Стандартная ошибка при выделении памяти под массив внутри функции. Здесь:
C
1
arr=(double**)malloc((*row)*sizeof(double*));
Ты выделяешь память и сохраняешь адрес в arr. Но arr это копия указателя на указатель. Когда из функции выйдешь, то этот адрес потеряешь. В main у тебя все тот же старый arr. Надо передавать в функцию указатель на указатель на указатель. И меня код соответственно.

Добавлено через 1 минуту
Как пример, из недавних тем: Создание динамического массива в функции
1
10 / 7 / 1
Регистрация: 08.10.2015
Сообщений: 307
05.04.2017, 21:27  [ТС] 5
nimazzzy, спасибо за ответ!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2017, 21:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

SFML. Ошибка "Process returned -1073741819"
Доброго времени суток. Возникла проблема, которую я не понимаю как решить. При запуске...

Process returned
Сразу после того, как действия в консоли завершаются закрывается графическое окно #include...

Не работает программа (Process returned o)
Доброго времени суток! Столкнулся с проблемой, при компиляции ошибок нет, но при запуске выдается...

Компилятор выдает process returned 0xc00000fd после ввода данных
Программа запускается, но после ввода данных сразу же вылетает. Заметил что это проблема с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.