Не могу вернуть из функции, пользовательский тип.
Участников: 2
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Не могу вернуть из функции, пользовательский тип.
Вот такая проблема.
Не могу вернуть из функции, пользовательский тип.
Кто-нибудь может чего-нибудь конкретное посоветовать?
Ясно что проблема при освобождении памяти. Когда срабатывает мой деструктор. Но почему он срабатывает?
Хотя если функция закрываеться, то конечно же, данные должны быть сброшены. Но в моём случае эти данные мне ещё нужны!
И ещё, заметил странность. конструктор и деструктор лишний раз отрабатывают. А значит, где-то создаётся ещё одна копия переменной. Спрашиваеться где?
Ниже мой тестовый код, который меня озадачил.
Не могу вернуть из функции, пользовательский тип.
Кто-нибудь может чего-нибудь конкретное посоветовать?
Ясно что проблема при освобождении памяти. Когда срабатывает мой деструктор. Но почему он срабатывает?
Хотя если функция закрываеться, то конечно же, данные должны быть сброшены. Но в моём случае эти данные мне ещё нужны!
И ещё, заметил странность. конструктор и деструктор лишний раз отрабатывают. А значит, где-то создаётся ещё одна копия переменной. Спрашиваеться где?
Ниже мой тестовый код, который меня озадачил.
- Код:
type mitype
declare constructor()
declare destructor()
buf as zstring ptr
end type
constructor mitype()
print "constructor"
this.buf = allocate( 80)
end constructor
destructor mitype()
print "destructor"
deallocate this.buf
end destructor
function test() as mitype
print "begin function"
dim t as mitype
*t.buf = "Hello, world! This is test buffer user define type."
function = t
function = t
print *t.buf
print "end function"
end function
sub main()
print "begin main"
dim t as mitype
print "call function"
t = test()
print "end call"
print *t.buf
print *(t.buf + 4)
print "end main"
end sub
main
sleep
end
Re: Не могу вернуть из функции, пользовательский тип.
Попробуйте ыернуть из функции указатель на этот тип...
vbman- Сообщения : 52
Дата регистрации : 2008-11-19
Возраст : 42
Откуда : Украина, Кировоград
Re: Не могу вернуть из функции, пользовательский тип.
Указатель. Логично и я так же решил, а потом и сделал. Оно сработало. Но мне пришлось прогу значительно переработать.
И я до сих пор не пойму, в чём было дело.
Такое впечатление, что создаёться ещё копия переменной.
И я до сих пор не пойму, в чём было дело.
Такое впечатление, что создаёться ещё копия переменной.
Re: Не могу вернуть из функции, пользовательский тип.
Eric-S пишет:Указатель. Логично и я так же решил, а потом и сделал. Оно сработало. Но мне пришлось прогу значительно переработать.
И я до сих пор не пойму, в чём было дело.
Такое впечатление, что создаёться ещё копия переменной.
так оно и есть
vbman- Сообщения : 52
Дата регистрации : 2008-11-19
Возраст : 42
Откуда : Украина, Кировоград
Re: Не могу вернуть из функции, пользовательский тип.
Спотыкаясь о подобные непонятки я начал разочаровываться во freebasic.
Учиться программированию можно пока не надоест, а вершины так и не достигнешь.
Учиться программированию можно пока не надоест, а вершины так и не достигнешь.
Re: Не могу вернуть из функции, пользовательский тип.
Eric-S пишет:Спотыкаясь о подобные непонятки я начал разочаровываться во freebasic.
Учиться программированию можно пока не надоест, а вершины так и не достигнешь.
Это не непонятки - так во всех языках (во всяком случае большинстве...)
vbman- Сообщения : 52
Дата регистрации : 2008-11-19
Возраст : 42
Откуда : Украина, Кировоград
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|