3 / 2 / 1
Регистрация: 10.10.2017
Сообщений: 85
1

Ошибка при удалении массива

28.12.2017, 21:47. Показов 524. Ответов 2
Метки нет (Все метки)

Программа работает нормально, но в конце при удалении выдает ошибку "Invalid address specified to RtlValidateHeap( 0000014A67F60000, 00000031EF93F437 )"
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
#include "stdafx.h"
#include <iostream>
#include <utility>
#include <cstring>
#include <stdio.h>
using namespace std;
 
int create_words(char*, char**);
void sort(char**, int);
 
int main()
{
    char **arr;
    arr = new char*[100];
    char s[100];
    puts("enter string: ");
    gets_s(s);
    int i = create_words(s, arr);
    sort(arr, i);
    for (int i = 0; i < 100; i++) {
        delete[] arr[i];
    }
    delete[] arr;
    system("pause");
}
int create_words(char *s, char **mas)
{
    int k = 0;
    char *delimiter = " ";
    char *p;
    char *np = NULL;
    p = strtok_s(s, delimiter, &np);
    while (k < 20 && p != NULL)
    {
        mas[k++] = p;
        p = strtok_s(NULL, delimiter, &np);
    }
    for (int i = 0; i < k; i++)
    {
        cout << mas[i] << "  " << endl;
    }
    return k;
}
 
void sort(char **arr, int size)
{
    for (int i = 0; i < size - 1; ++i)
        for (int j = 0; j < size - 1; ++j)
            if (strlen(arr[j + 1]) < strlen(arr[j]))
                swap(arr[j], arr[j + 1]);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2017, 21:47
Ответы с готовыми решениями:

Ошибка при удалении массива
Проблема в том, что при попытке добавить строки удаления массивов программа вылетает, если же их...

Ошибка при удалении динамического массива
Непонятная мне ошибка при удалении массива #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Ошибка при удалении динамического массива
Добрый вечер! Ругается на HEAP CORRUPTION DETECTED в строке с delete vertex; В чём может быть...

Ошибка при удалении динамического массива
Доброго времени суток! ПРоблема заключается в том, что при попытке очистить память из под...

2
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
29.12.2017, 07:59 2
new и delete всегда в паре. Откуда ты взял 20-22, если выделения не было?
1
3757 / 3075 / 853
Регистрация: 25.03.2012
Сообщений: 11,386
Записей в блоге: 1
29.12.2017, 08:10 3
Цитата Сообщение от alexboliam Посмотреть сообщение
for (int i = 0; i < 100; i++) {
delete[] arr[i];
}
подстроки никто не выделял через new. Указатель на них просто выбирался из буфера strtokом.
По сути каждый arr[i] равен s (с некоторым +смещением правда, но не в этом суть)
А значит к ним нельзя применять delete - ты их не получал через new, ты получал только arr
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2017, 08:10
Помогаю со студенческими работами здесь

Ошибка при удалении массива с помощью delete
Изучаю C++ и у меня задание разбить текст неопределенной длинны на массив строк. Нацарапал класс...

Ошибка SIGTRAP при удалении динамического 2D массива
Нужно было создать двухмерный динамический массив в форме &quot;пирамиды&quot;, скажем так, заполнить его...

Возникает ошибка при удалении динамического массива символов в деструкторе класса
Всем привет. Есть приватная переменная, указатель на строку wchar_t *pUAgent; В конструкторе...

Ошибка при удалении класса
Доброго времени суток! Есть класс: class Sector { public: Sector(); ~Sector(); private:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru