Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
1

HEAP CORRUPTION DETECTED

03.02.2011, 20:16. Просмотров 1204. Ответов 2
Метки нет (Все метки)

На строчке 36 с очисткой памяти постоянно вылетает ошибка дебага

HEAP CORRUPTION DETECTED after Normal block (#202) at 0x000B6A58
CRT detected that the application wrote to memory after end of heap buffer.

и подсвечивается
if (__active_heap == __SYSTEM_HEAP) {
return HeapAlloc(_crtheap, 0, size ? size : 1);
}
в malloc.h


Подскажите, пожалуйста, что не так.

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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
 
struct scan_info {
char model[25]; // наименование модели
int price;  // цена
double x_size;  // горизонтальный размер области сканирования
double y_size;  // вертикальный размер области сканирования
int optr;   // оптическое разрешение
int grey;   // число градаций серого
};
 
void addStructure(scan_info *, int*);
 
void main ()
{
 
    setlocale (LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
int i=0, j=0, n_of_items=0;
scan_info *input_item;
 
printf ("\nВведите количество записей: ");
scanf ("%d", &n_of_items);
input_item = new scan_info[n_of_items];
 
if (input_item == NULL) printf ("Ошибка выделения памяти"); 
 
addStructure(&input_item[n_of_items], &n_of_items);
 
for (i=0;i<n_of_items;i++) delete [] input_item;
system ("pause");
}
 
void addStructure(scan_info *input_item, int *n_of_items)
{
    for (int i=0;i<*n_of_items;i++)
        {
            printf ("\nВвод данных о сканере\n");
            fflush(stdin);
            printf ("Введите наименование модели сканера: ");
            scanf("%s",&input_item[i].model);
            fflush(stdin);
            printf ("Введите цену модели сканера: ");
            scanf("%d", &input_item[i].price);
            fflush(stdin);
            printf ("Введите горизонтальный размер области сканирования: ");
            scanf("%lf", &input_item[i].x_size);
            fflush(stdin);
            printf ("Введите вертикальный размер области сканирования: ");
            scanf("%lf", &input_item[i].y_size);
            fflush(stdin);
            printf ("Введите оптическое разрешение: ");
            scanf("%d", &input_item[i].optr);
            fflush(stdin);
            printf ("Введите число градаций серого: ");
            scanf("%d", &input_item[i].grey);
        }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2011, 20:16
Ответы с готовыми решениями:

Heap corruption detected
В процессе разработки получилась интересная ситуация. Есть такой код char...

Задача на работу с динамическим массивом. HEAP CORRUPTION DETECTED
Не понимаю причину ошибки. Подскажите пожалуйста. // pmArray.cpp :...

Что может означать такая ошибка: "Heap corruption detected"
Что может означать такая ошибка? переполнение памяти?

Очередь с приоритетом (Min heap)
Доброе утро. Подскажите пожалуйста как реализовать очередь с приоритетом (min...

Найти ошибку в процедуре сортировки Heap (пирамида)
вот код ,не знаю почему не работает ...

2
slavich
12 / 12 / 2
Регистрация: 25.10.2009
Сообщений: 32
03.02.2011, 20:32 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void main ()
{
 
    setlocale (LC_ALL, "Russian");
   SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
int i=0, j=0, n_of_items=0;
scan_info *input_item;
 
printf ("\nВведите количество записей: ");
scanf ("%d", &n_of_items);
input_item = new scan_info[n_of_items];
 
if (input_item == NULL) printf ("Ошибка выделения памяти"); 
 
addStructure(input_item, &n_of_items);
 
 delete [] input_item;
system ("pause");
}
Вот подправил
1
chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
03.02.2011, 20:41  [ТС] 3
slavich, спасибо, работает!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2011, 20:41

Critical error detected c0000374
В общем ошибка возникает если использовать определение BACKSIZE при выделении...

Почему в Си массив со статическим размером объявленный внутри функции помещается в stack, а не в heap?
Собственно, сабж. Чем было обусловленно такое решение? В джава, например,...

Выделение памяти и ошибка Heap block at 00B515A0 modified at 00B515B9 past requested size of 11
Доброго времени суток! есть такой кусок кода: size_t read_lines(char...


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

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

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