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

Точка останова(повреждение кучи) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проект - "undefined reference to ." http://www.cyberforum.ru/cpp-beginners/thread1062862.html
Добрый день, и всех с наступившим Новым годом! Очень нужна ваша помощь. Вообще говоря, я сейчас изучаю OpenGL, и ошибка возникла при попытке скомпилировать проект из книжки "OpenGl - Superbible", но ошибка, мне кажется, не имеет никакого отношения к OpenGL, а к сборке проекта на С в целом. Я гуглил и искал, но проблему так и не удалось решить. У меня есть программа main.c, в ней...
C++ сделать любую прогу с булевыми функциями Здравствуйте, ребят помогите пожалуйста сделать любую прогу с булевыми функциями с выводом таблиц со статьей о проге, заранее благодарен!!! http://www.cyberforum.ru/cpp-beginners/thread1062851.html
C++ Сортировка в строках массива по данным другого
Здравствуйте, вот код k=0; max=0; for (q=1;q<4;q++) for (int i=0;i<n;i++) { for (int j=i;j<n;j++) if (min==-1) continue; else
Кодирование/Декодирование текста C++
Создать приложение с графическим интерфейсом в любой визуальной среде разработки, выполняющее следующие действия: 1) Пользователь вводит текст. Количество символов не ограничивается. Допускаются буквы кириллицы и прочие видимые знаки. 2) Выполняется кодирование символов в кодировку, заданную индивидуальным вариантом задания. 3) Закодированный текст выводится в двоичном виде на...
C++ Где взять учебник, в котором описывается работа с классами http://www.cyberforum.ru/cpp-beginners/thread1062821.html
хотел сначала научиться классам, но не знаю как - в ютубе только основа и без продолжения, а мне нужен учебник или что-то в этом роде, чтобы прям от начало и до конца можно было учить классы. Заранее благодарю!
C++ Все по учебнику а программа выдает ошибку, посмотрите пожалуйста #include <iostream> using namespace std; void simon (int); simon () int main () { подробнее

Показать сообщение отдельно
Mukue
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 35
04.01.2014, 17:57  [ТС]     Точка останова(повреждение кучи)
Допустим вот, метод для того, чтобы выделить из строки, заданной массивом char, выделить строку между пробелами на позиции left и right, может и тупой метод, но какой есть. Я спрашиваю только насчет случая, когда right = число, left = 0, у меня
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
char* Base::SplitCharArray(char arr[], int left, int right)
{
    int indexl, //индекс начала
        indexr; //индекс конца
    
    if(left!=0)
    {
        for(int i=0,j=0; i<strlen(arr);i++)
        {
            if (arr[i]==' ')
            {
                ++j;
                if (j==left)
                {
                    indexl=i+1;
                    break;
                }
                
            }
        }
        for (int i=indexl,j=left;i<strlen(arr);i++)
        {
            if (arr[i]==' ')
            {
                ++j;
                if (j==right)
                {
                    indexr=i;
                    break;
                }
                
            }
        }
        char *arr2=new char[indexr-indexl];
        for (int i=indexl; i<indexr;i++)
        {
            arr2[i]=arr[i];
        }
        return arr2;
    }
    else
    {
        for (int i=0,j=0;i<strlen(arr);i++)
        {
            char ch=arr[i];
            if (arr[i]==' ')
            {
                ++j;
                if (j==right)
                {
                    indexr=i;
                    break;
                }
                
            }
        }
        //char *arr2=new char[indexr];
        char arr2[80], *p;
        p=arr2;
        for (int i=0; i<indexr;i++)
        {
            p[i]=arr[i];
        }
        return p;
    }
}
Тут после выполнения у меня в arr2 помимо строчки откуда то появляется еще мусор, т.е. выделили память под 80 символов, заняли не все, а остальные под что попало.
Потом переходим в ту функцию read:
C++
1
2
3
4
5
6
7
8
9
10
11
12
while(in.getline(str, 79)!=NULL)
    {
        
        block=new char[20];
        strcpy(block,SplitCharArray(str, 0, 3));
        while(*block)
        {
            cout<<*block;
            block++;
        }
        delete []block;
    }
в блок у меня даже не записывается та строчка, которую я в методе получил, а только мусор( Я вот думаю, может мне на векторы или вообще на строки перейти.
 
Текущее время: 04:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru