Здравствуйте, гость ( Вход | Регистрация )
lanz | Дата 29.8.2015, 0:10 |
Это условие вообще лишнее, поскольку мы уже знаем, что _strList[i] это point, line или polygon. |
|
Shaitan | Дата 28.8.2015, 19:39 |
например, ты уверен, что это условие написано правильно? if((_strList[i] != "=")||(_strList[i] != ".")||(_strList[i] != ",")||(_strList[i] != ":")) Чёрт. Вечно я вместо "И" ставлю "ИЛИ".. Спасибо ещё раз. |
|
Iron Bug | Дата 28.8.2015, 10:36 |
Спасибо за ошибку. да не за что. это твоя ошибка, ты её сам сделал ![]() код надо писать внимательно. если опыта нет, то тем более не нужно торопиться. например, ты уверен, что это условие написано правильно?
|
|
Shaitan | Дата 27.8.2015, 21:04 |
Причину нашёл. Я не инициализировал указатель на структкру. var = new RVariable(); Проблема решена. Всем спасибо! |
|
Shaitan | Дата 27.8.2015, 19:52 |
А какие ошибки лезут? После того отработала моя функция runLineCode, я очищая промежуточный список:
на строке strListLine.clear(); мой код выкидывает в qarraydata.h
на строку QArrayData::deallocate(data, sizeof(T), Q_ALIGNOF(AlignmentDummy)); Странно почему тут ошибка. Вот исправленная функция после Ваших замечаний:
|
|
Shaitan | Дата 27.8.2015, 16:48 |
Цитата(Shaitan @ 27.8.2015, 15:03) * Вторая странность это я узнаю длину списка и перебираю его до того пока не упрусь в ";" нет. до конца это списка это никогда не дойдёт, потому что условие leght >= i его выкинет ровно посередине. простая система уравнений Цитата leght = _strList.length() - i; leght = i; даёт Цитата i = _strList.length()/2; так что с логикой тут серьёзные проблемы. Чёрт. тут опечатка у меня. Должно быть: leght = _strList.length() - 1; так как масив от нуля считается, потому и минус 1. Спасибо за ошибку. Вечером постараюсь пересмотреть код. Вопрос. Очистку списка структур я правильно делаю? |
|
Iron Bug | Дата 27.8.2015, 15:32 |
Насчёт delete &rVar; Это я пытаюсь очистить память от указателей. Согласен нужно это сделать иначе. это выражение просто вообще смысла не имеет, причём в любом контексте. и оно всегда будет вызывать сбой в памяти. Вторая странность это я узнаю длину списка и перебираю его до того пока не упрусь в ";" нет. до конца это списка это никогда не дойдёт, потому что условие leght >= i его выкинет ровно посередине. простая система уравнений Цитата leght = _strList.length() - i; leght = i; даёт Цитата i = _strList.length()/2; так что с логикой тут серьёзные проблемы. |
|
Shaitan | Дата 27.8.2015, 13:03 |
ну, при беглом просмотре кода, сразу же в первом блоке: delete &rVar; зачем тут адрес? подумай, что ты удаляешь. вообще, логика кода какая-то странная. ты не проверяешь, что _strList содержит минимум два элемента, хотя обращаешься к ним. потом, вот это условие тоже какое-то малопонятное: leght = _strList.length() - i; while(leght >= i ... Насчёт delete &rVar; Это я пытаюсь очистить память от указателей. Согласен нужно это сделать иначе. Вторая странность это я узнаю длину списка и перебираю его до того пока не упрусь в ";" А какие ошибки лезут? Я вечером опишу подробнее. Постараюсь со скриншотами. Если очень кратко. Я создаю список структур, а после я этот список очищаю и высвобождаю память под структурами. |
|
Iron Bug | Дата 27.8.2015, 11:01 |
ну, при беглом просмотре кода, сразу же в первом блоке:
зачем тут адрес? подумай, что ты удаляешь. вообще, логика кода какая-то странная. ты не проверяешь, что _strList содержит минимум два элемента, хотя обращаешься к ним. потом, вот это условие тоже какое-то малопонятное:
не исключено, что там ещё есть ошибки логические. в общем, внимательнее надо код писать. |
|
Trisch | Дата 26.8.2015, 23:29 |
А какие ошибки лезут? | |
Просмотр темы полностью (откроется в новом окне) | |
![]() |
Текстовая версия | Сейчас: 3.3.2021, 11:16 |