Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
#1

Ошибка деструктора - В конструкторе происходит выход за границу массива - C++

05.07.2014, 21:21. Просмотров 713. Ответов 22
Метки нет (Все метки)

Доброго времени.

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
#include <iostream.h>
#include <math.h>
 
class OKTAVE
{
public:
    OKTAVE(unsigned int Leng)
    {
        leng=Leng;
        wave=new signed short(leng);
        for(count=0;count<leng;count++)
        {
            wave[count]=(signed short)(32768*sin(count*3.1415927/leng));
            count++;
        }
        count=0;
    }
    ~OKTAVE(){delete[]wave;}
 
private:
    signed short*wave;
    unsigned short count,leng;
};
 
int main()
{
    OKTAVE okt(1024);
 
    return 0;
}
Похоже на то, что в конструкторе происходит выход за границу массива, но не пойму, вроде же порядок...помогите.

Добавлено через 1 минуту
При удалении экземпляра класса вылетает ошибка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2014, 21:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка деструктора - В конструкторе происходит выход за границу массива (C++):

Произведение матриц, выход за границу массива - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std; void...

Ошибка "Выход за границу вектора" - C++
Помогите пожалуйста, не пойму в чем дело, вывод массива по лекции сделал а на нем ошибка выход за границу вектора. Объясните плиз. ...

Почему происходит выход за границы массива в функции Analyze()? - C++
#include &quot;Analyzer.h&quot; #include &quot;HashTable.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; ...

Выход за границу выделенной памяти - C++
Какие операции (кроме записи) за пределами выделенной памяти приводят к UB?

Почему происходит выход за границы? - C++
2 игрока берут из своих колод по 1-й карте. Т.е. достают элемент дека из начала дека. Так происходит, пока колода одного из игроков не...

О чем говорит эта ошибка? Выход за пределы массива - C++
main.cpp invalid operands of types `int' and `int' to binary `operator+' вот сам код: #include &lt;cstdlib&gt; #include &lt;iostream&gt; ...

22
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
06.07.2014, 16:34  [ТС] #16
Цитата Сообщение от Tulosba Посмотреть сообщение
Для цикла следовало бы задать свою переменную
Да что Вы придрались к моей переменной? Пусть себе считает)

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
не логичнее было бы сделать так?
Видите ли, каждый экземпляр класса имеет разную длину. Что я им должен передавать в качестве index?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
06.07.2014, 16:34 #17
Цитата Сообщение от Retyrn0 Посмотреть сообщение
по вашему я должен быть создать внутри конструктора переменную count1 ну или count?
Нет. Т.к. ты не выложил или не рассказал на словах зачем нужна переменная count в классе, то выводы пока делать рано.
Цитата Сообщение от Retyrn0 Посмотреть сообщение
А зачем, если она и так есть и пока свободна?
Это зависит от многих факторов, о которых ты не рассказал. Но я говорил не про этот конкретный случай, а в целом. Т.е. у каждой переменной должна быть своя конкретная задача, свое предназначение. Если переменная по совместительству и швец и жнец, то это порождает проблемы, о которых я писал выше.
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
06.07.2014, 16:38  [ТС] #18
Получается, что я должен отдельно от класса создать массив индексов, обрабатывать их в основном цикле? Но зачем мне тогда вообще нужен будет класс? - Создать сразу и массивы, как не объектные переменные и радоваться жизни

Добавлено через 1 минуту
Цитата Сообщение от DrOffset Посмотреть сообщение
о которых ты не рассказал
Я же сразу намекнул, что я рассказал не всё и что там порядок.
Цитата Сообщение от DrOffset Посмотреть сообщение
по совместительству и швец и жнец
У меня она по совместительству и швец и швец) А вот зачем мне два швеца не знаю)
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
06.07.2014, 16:41 #19
Цитата Сообщение от Retyrn0 Посмотреть сообщение
что я рассказал не всё и что там порядок.
Да даже дядькам с 20+ лет опыта не стоит верить про порядок
Цитата Сообщение от Retyrn0 Посмотреть сообщение
У меня она по совместительству и швец и швец) А вот зачем мне два швеца не знаю)
Вот на что я точно не надеялся, что ты сразу же переменишь свое мнение. Остальное к опытом придет.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.07.2014, 16:44 #20
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Да что Вы придрались к моей переменной? Пусть себе считает)
Я просто даю советы, которые считаю правильными. Прислушиваться к ним или нет - дело сугубо личное.
Однако, есть общепризнанные практики и правила хорошего тона программирования. Если их не придерживаться, будет трудно контролировать код в процессе его развития.
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
06.07.2014, 16:58  [ТС] #21
Цитата Сообщение от DrOffset Посмотреть сообщение
сразу же переменишь свое мнение
Ну я изначально писал, что эта переменная выполняет одну и ту же функцию - хранит индекс активного элемента. Так что я мнения своего не менял, вроде бы.
Цитата Сообщение от Tulosba Посмотреть сообщение
будет трудно контролировать код в процессе его развития
Это разовая програмка для себя. Если решу её реализовывать, как библиотеку другим программистам или ещё как - обязательно воспользуюсь советами.
0
DrOffset
06.07.2014, 20:36
  #22

Не по теме:

Цитата Сообщение от Retyrn0 Посмотреть сообщение
Так что я мнения своего не менял, вроде бы.
Ты меня не так понял. Я писал, что не надеялся, что ты изменишь свое мнение сразу. Точно так же как и Tulosba я просто даю советы. Прислушиваться к ним или нет - дело твое, Насильно переубеждать никто не будет.

0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
06.07.2014, 22:16  [ТС] #23
Цитата Сообщение от DrOffset Посмотреть сообщение
Ты меня не так понял

Не по теме:

ааа.


Цитата Сообщение от DrOffset Посмотреть сообщение
Прислушиваться к ним или нет - дело твое
Спасибо за советы, я с ними согласен, но в конкретном случае их можно проигнорировать)
0
06.07.2014, 22:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2014, 22:16
Привет! Вот еще темы с ответами:

Почему происходит ошибка при описании массива? - C++
int setSize; cout &lt;&lt; &quot;How many elements would you have? &quot;; cin &gt;&gt; setSize; const int getSize = setSize; int a; ошыбка тут int...

Происходит выход из функции при попытке считывания текста в переменную - C++
Почему при попытке записать текст на английском языке в str.maker выходит из функции? (и как правильно это сделать) #include...

Ошибка деструктора - C++
Имеется шаблон класса- динамического массива. После создания функции push_back начал ругаться конструктор. Объясните пожалуйста в чем дело?...

Ошибка работы деструктора - C++
Здравствуйте. Недавно начала программировать на C++, поэтому возможно жителям данного форума мой вопрос покажется сильно нубским. Тем не...


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

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

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