![]() #янепрогерятолькоучусь
Решила я тут, чтоб совсем не заплесневеть мозгом за лето, попробовать написать простенькую игрушку. И я была бы не я, если б всё работало. Проблема такова: Есть класс. У него есть три поля: int, int и char*. Так же есть private метод типа void, который по тем двум интам задаёт значение char*. Этот метод вызывается в конструкторе с заданными интами. Только вот на выходе (то есть, в месте, где конструктор и был вызван) получается экземпляр класса, у которого заданы интовые поля, а в char* поле хранится белиберда, которая при вызове деструктора и освобождении памяти вопит, что я лезу не в ту область памяти. В общем, спасите-помогите: я в упор не понимаю, как это поправить. (пишется вся эта хрень на плюсах) 13 августа 2018
|
![]() |
|
Подпишусь.
Как память выделяете? Белиберда в переменной - это всегда тонкий намек, на то, что с её заполнением или выделением памяти что-то пошло не так. 1 |
![]() |
|
id_september
я предполагаю, что из самого метода новое значение не передаётся но я не знаю, почему так происходит |
![]() |
|
Охренеть! Маллок! Правда, что ли?
Охренеть ещё раз!!! |
![]() |
|
pskovoroda
есть такое надо бы поискать что-то менее странное, но пока руки не доходят поэтому использую то, с чем знакома |
![]() |
|
> (пишется вся эта хрень на плюсах)
Но зачем? о_О |
![]() |
|
А вызываете как?
|
![]() |
ufhhb2018
|
ни тот конструктор вызываешь, очевидна жы
|
![]() |
ufhhb2018
|
либа делаишь delete вместа free
|
![]() |
ufhhb2018
|
пакажи сись... полний код класса и как ти его визиваишь вместа ентага абрыфка
|
![]() |
|
Не знаю, у меня получилось: https://onlinegdb.com/BJszavJLX
Передвинул *view в public для удобства. Ещё вот эта строка неправильная: view[length + 3] = ''; — тут должен быть пробел, а не пустой литерал. |
![]() |
|
![]() |
|
Styx
там даже не пробел, там символ конца строки, но фанфикс его упорно удаляет |
![]() |
|
ufhhb2018
там не хватает разве что деструктора, остальные методы в данном случае не важны Line::~Line() { num = -1; length = 0; if (view != NULL) { free(view); view = NULL; } } |
![]() |
|
leprechaun, посмотрите код по ссылке.
|
![]() |
|
Styx
а разве оно не должно было сломаться из-за того, что символа конца строки нет? |
![]() |
|
leprechaun, а я там пробел вставил :)
|
![]() |
|
Styx
как так? если я про него забывала, у меня глючило решительно всё |
![]() |
|
leprechaun, ну вот вставил там \\n, работает.
|