Здравствуйте, гость ( Вход | Регистрация )
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 |
А какие ошибки лезут? | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 26.4.2024, 17:22 |