Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Simka_95
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 3
#1

происходит переполнение памяти ? - C++

25.12.2012, 12:48. Просмотров 499. Ответов 3
Метки нет (Все метки)

Пожалуйста помогите решить проблему:
при компиляции ошибок нет, но при запуске выдает ошибку, я так понимаю происходит переполнение памяти, но как этого избежать?, пробовал delete [](имя массива) - не помогает.
Скрин с ошибкой ниже.

Сам код:
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
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include "iostream.h"
#include "windows.h"
#include "time.h"
#include "stdlib.h"
#include "string"
#include "math.h"
 
    int MaxElement(int mas[],int sum)
    {
          int MaxE = mas[0];
          for(int i = 1; i < sum; ++i)
            {
             if (mas[i] > MaxE)
             MaxE = mas[i];        
            }
           char buf[20];
       itoa(MaxE,buf,2);
       std::string str;
       str.insert(0,buf);
       int size=str.size(); 
       str.erase(0,str.size());
       int max=size*sum;
           return max;
    }
 
void start(int bit)
{
   int A;
   int B;
   Sleep(100);
    srand(time(NULL));
    int *bin_mas=new int[bit];
    for(int d=0;d<bit;d++)
    {
        int k,s=0,sum=0;
    k=rand()%10;
    if (k<5)
    {
        k=1;
        bin_mas[d]=k;
        s++;
        sum++;
    }
    else
    {
        k=0;
        s++;
        bin_mas[d]=k;
    }
    }
 
    int *p_mas=new int[sum];
    int g=0;
    for(int db=0;db<bit;db++)
    {
         if(bin_mas[db]==1)
      {
          p_mas[g]=db+1;
          g++;
      }
    }
 
    int *mas_2=new int[sum/2];
    int f=0;
    for(int j=0;j<sum;j++)
        {
      if (p_mas[j]<p_mas[j+1])
      {
      mas_2[f]=p_mas[j+1]-p_mas[j];
      f++;
      }
      if(p_mas[j]==p_mas[j+1])
      {
          mas_2[f]=0;
      f++;
      }
        }
 
           char buf[20];
       itoa(p_mas[0],buf,2);
       std::string mystr;
       mystr.insert(0,buf);
       int size=mystr.size();
       int nm=size;
 
A=MaxElement(p_mas,g);
B=MaxElement(mas_2,f)+nm;
 
    cout<<A<<" ";
    cout<<B<<"\n";
}
 
int main(int argc, char* argv[])
{
      for(int e=0;e<30;e++)
    {
 
cout<<"64 bit"<<"\n";
start(64);
cout<<"\n"<<"----------------------"<<"\n";
cout<<"128 bit"<<"\n";
start(128);
cout<<"\n"<<"----------------------"<<"\n";
cout<<"256 bit"<<"\n";
start(256);
    }
    return 0;
}
Миниатюры
происходит переполнение памяти ?  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 12:48     происходит переполнение памяти ?
Посмотрите здесь:

Почему происходит переполнение? - C++
Если диапазон float: -2 147 483 648.0 / 2 147 483 647.0, то почему происходит переполнение. Или это что-то другое? P.S.: тогда что...

Как происходит переполнение при делении - C++
Форумчане,подскажите желательно на С++, каким образом происходить переполнение буфера(или стэка) при операции деления?

Вставлять тирэ после каждого второго символа строки? В коде скорее всего какое-то переполнение происходит - C++
Помогите поправить Результат должэн быть вот таким jf-js-dl-fs-ld-k Спасибо. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Переполнение стека во время освобождения памяти - C++
Здравствуйте! СТолкнулся с такой проблемой, что при работе деструктора программа аварийно завершается, а в дебаггере появляется сообщение о...

А что происходит в памяти? - C++
Привет Вот код: (написан с применение фреймворка Qt, но это не влияет на суть вопроса) //main_window.h #include &quot;Mill.h&quot; ...

Почему происходит утечка памяти? - C++
Добрый день, форумчане! Прошу помощи в вопросе - есть функция своп. void swap(CustomVector&lt;T&gt;&amp; in) throw() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vladimir616
112 / 112 / 3
Регистрация: 05.07.2009
Сообщений: 224
25.12.2012, 13:37     происходит переполнение памяти ? #2
Simka_95, на какой строчке возникает ошибка?
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
25.12.2012, 16:39     происходит переполнение памяти ? #3
нууу, начнем с того, что идентификатор Sum объявлен в цикле. А после вы его используете в другом цикле. Это невозможно: он будет не определен. Определите его сначала.

C++
1
2
3
4
void start(int bit)
{
    int A, B;
    int sum = 0;
а дальше то, из-за чего, собственно, ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    int *mas_2=new int[sum/2]; // вдвое меньше суммы
    int f=0;
 
    for(int j=0;j<sum;j++) // цикл до суммы.
    {
        if (p_mas[j] < p_mas[j+1])
        {
            mas_2[f] = p_mas[j+1]-p_mas[j]; // mas_2[f] если f больше, 
                                            // чем sum/2, то выход за границы массива.
            f++;
        }
        if(p_mas[j] == p_mas[j+1])
        {
            mas_2[f]=0;
            f++;
        }
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 19:17     происходит переполнение памяти ?
Еще ссылки по теме:

удаляется ли объект или происходит утечка памяти? - C++
Добрый день, подскажите, при таком коде, удаляется ли объект или происходит утечка памяти? std::list&lt;A*&gt; entities; ...

Адреса памяти, в которых происходит выделение, и нет освобождения - C++
Добрый день форумчане. Уже несколько недель ломаю себе голову над одной задачей. За меня делать ничего не прошу, так как в принципе проект...

Что происходит за кулисами при выделении памяти для переменной? - C++
Здравствуйте, уважаемые форумчане! У меня такой вопрос: &quot;Что происходит, когда я объявляю переменную? Я думаю, что когда я объявляю...

Переполнение - C++
Доброго времени суток! Есть код: void menu() { IndexList Universal; List *tmp = NULL; int punkt_menu; char *value =...


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

Или воспользуйтесь поиском по форуму:
Simka_95
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 3
25.12.2012, 19:17  [ТС]     происходит переполнение памяти ? #4
Теперь все ясно, огромное спасибо
Yandex
Объявления
25.12.2012, 19:17     происходит переполнение памяти ?
Ответ Создать тему
Опции темы

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