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

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

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

При вызове delete[] _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++

04.04.2014, 23:21. Просмотров 916. Ответов 4
Метки нет (Все метки)

Функция strtok влияет на массив second, после чего его невозможно удалить, не могу понять чего.
first удаляет без проблем.
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
FILE* inputFile;
    char *filename;
    int count_char=0;
    char symbol;
    char* first=new char [10];
    char* second=new char [10];
        filename=command.arguments[0];
        if(strstr(command.arguments[0], ".txt") != NULL)
        {
                if((inputFile = fopen(filename,"rt")) == NULL)
                {
                    printf("Not Find.\n");
                }
                else
                {
        
                    while (symbol=fgetc(inputFile)!=EOF)
                    {
                        if(symbol!='\n')
                        count_char++;
                    }
                    char *pointer=command.arguments[1];
                    strcpy(first,command.arguments[1]);
                    strcpy(second,command.arguments[1]);
                    
                    if(*pointer!=',')
                    {
                        first=strtok(first,",");
                        second=strtok(NULL,",");
                    }
                    else
                    {
                        first=NULL;
                        second=strtok(second,",");
                    }
                    int first_2=0;
                    int second_2=0;
                    if(first!=NULL && second!=NULL)
                    {
                        first_2=atoi(first);
                        second_2=atoi(second);
                    }
                    else if(first!=NULL && second==NULL)
                    {
                        first_2=atoi(first);
                        second_2=0;
                    }
                    else 
                        if(first==NULL && second!=NULL)
                        {
                            first_2=0;
                            second_2=atoi(second);
                        }
                
                        }
                    }
        else
        {
            printf("File not txt.\n");
        }
    delete []first;
    delete []second;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 23:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При вызове delete[] _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) (C++):

При вызове деструктора вылазит ошибка _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
Понимаю,что подобный вопрос на форуме поднимался не раз,но разобраться не могу всё равно. Вот описание класса: class Stroka { ...

При вызове деструктора выдается ошибка _BLOCK_TYPE_IS_VALID (pHead->nBlockUse) - C++
Вопрос на форуме поднимался раз 100, но все равно не могу понять в чем проблема. Знаю, что искать нужно в setSpace() и getFlat(). Но что...

Оператор "delete" и ошибка "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse) Error" - C++
Здравствуйте. Возникла проблема с оператором "delete". Пользуюсь VisualStudio 2010. Программа компилируется нормально. Все отрабатывает....

phead->nblockuse - C++
помогите нейтрализовать ошибку. есть структура struct tim{ WORD wMonth; WORD wDay; WORD wYear; WORD wHour; WORD...

_BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
Нужна помощь гуру. Искать ошибку тут в коде ненужно, сам все нашёл, мне нужно объяснение почему так происходит, увы нигде не нашёл...

Ошибка pHead->nBlockUse - C++
После выполнения программы выскакивает ошибка. Почитал на форумах, что проблема или в деструкторе или в КК. Но я сам не смог разобраться...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
05.04.2014, 00:47 #2
Подсказка: операторам delete и delete [] должны передаваться указатели, которые были возвращены операторами new и new [] соответсвенно. Сравните значения first и second сразу после new [] с их же значениями перед delete [].
Ну чтоб совсем ясно стало:
Цитата Сообщение от olexandr_r Посмотреть сообщение
C++
1
2
3
4
5
first=strtok(first,",");
second=strtok(NULL,",");
...
first=NULL;
second=strtok(second,",");
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
05.04.2014, 10:15  [ТС] #3
Я понял, когда мы удалили первый массив, значение с другого удалилась также. Как это обойти?
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
05.04.2014, 11:13 #4
Нет, Вы не поняли. У Вас изменяются указатели first и second. Используйте копии.
C++
1
2
3
4
5
6
7
8
9
10
11
char* first=new char [ 10 ];
char* second=new char [ 10 ];
char *first_copy = first;
char *second_copy = second;
std::cout << static_cast< void * >( first ) << ' ' << static_cast< void * >( first_copy ) << std::endl;
std::cout << static_cast< void * >( second ) << ' ' << static_cast< void * >( second_copy ) << std::endl;
//здесь остальной Ваш код
std::cout << static_cast< void * >( first ) << ' ' << static_cast< void * >( first_copy ) << std::endl;
std::cout << static_cast< void * >( second ) << ' ' << static_cast< void * >( second_copy ) << std::endl;
delete [] first_copy;
delete [] second_copy;
olexandr_r
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 55
05.04.2014, 12:50  [ТС] #5
Спасибо работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2014, 12:50
Привет! Вот еще темы с ответами:

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
Ребят, умоляю помогите. Незнаю что я опять делаю не так, но выдает такую ошибку. В общем задание такое: Работа с бинарными файлами. ...

Деструктор и _Block_Type_Is_Valid (pHead->nBlockUse) - C++
Приветствую! Встретился сегодня с такой проблемой. Есть функция, которая возвращает объект. При выходе из функции появляется ошибка...

C++ block type is valid phead nblockuse - C++
День добрый. Задача такая : определить класс pvector, похожий на вектор указателей, за исключением того, что он содержит указатели объекта...

вот такая штука у меня _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) - C++
я знаю что здесь что-то с деструктором но я новичок поэтому сам никак не могу решить помогите #include&lt;iostream&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.04.2014, 12:50
Ответ Создать тему
Опции темы

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