|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorЕсть класс, который хранит размер и буфер описывающий в общем случае строку данных. После выделения буфера, сразу прописываю размер буфера, однако vs2017 выдает warning. Я так полагаю из за того, что конкретно для *m_buffer не выделяется память. Как правильно обойти этот варнинг? Код: plaintext 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.
Ну, говнокод во всей своей красе. Даже смотреть противно. Странно, что только warning и только один... Вот это вообще как у тебя компилируется? Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 10:47 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorЕсть класс, который хранит размер и буфер описывающий в общем случае строку данных. После выделения буфера, сразу прописываю размер буфера, однако vs2017 выдает warning. Я так полагаю из за того, что конкретно для *m_buffer не выделяется память. Как правильно обойти этот варнинг? Да и самое главное -- НАФИГА? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 10:48 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
MasterZivВот это вообще как у тебя компилируется? Код: plaintext 1. 2. 3. 4.
А что не так? Тебя пробел смущает? Разыменовывается указатель на char, конвертируется в int и привет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:02 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
NekZА что не так? Тут return умножается на m_Buffer ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:16 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyNekZА что не так? Тут return умножается на m_Buffer Спасибо Бьярне за перегруженную семантику * и &. В итоге так и смотрится, вызывая когнитивный диссонанс. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 11:24 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
>> Странно, что только warning и только один... Ну.. скажем так с нуля писать НЕ говнокод на сях наверное мало кому под силу :) Язык очень верткий, то что делается одним способом оказывается неправильным и делается еще пятью которые правильные. Все в процессе ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 16:48 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
А нафига? Ну с одной стороны действительно нафига когда есть готовые Qt, Net библиотеки в которых все разжевано и положено. А с другой - наверное зависимость. Разбирать по винтикам =D ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 16:53 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorА нафига? Ну с одной стороны действительно нафига когда есть готовые Qt, Net библиотеки в которых все разжевано и положено. А с другой - наверное зависимость. Разбирать по винтикам =Dкаждый тру-программер должен написать свой CString!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 17:35 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorА нафига? Ну с одной стороны действительно нафига когда есть готовые Qt, Net библиотеки в которых все разжевано и положено. А с другой - наверное зависимость. Разбирать по винтикам =D Нафига хранить размер в нескольких последовательных элементах массива char[], а не в отдельном поле? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 18:35 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorА нафига? Ну с одной стороны действительно нафига когда есть готовые Qt, Net библиотеки в которых все разжевано и положено. А с другой - наверное зависимость. Разбирать по винтикам =D Тут "изобретен" недо std::string, который без зависимостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 18:50 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
MasterZiv Нафига хранить размер в нескольких последовательных элементах массива char[], а не в отдельном поле? Наверно чтобы прога вылетела на таком коде Код: plaintext 1. 2.
а потом баг искать долго и упорно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 18:56 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
Dima TТут "изобретен" недо std::string, который без зависимостей.Зависимость имелась ввиду - разбирать с нуля как устроен мир. Вот вы написали что бред хранить длину строки в одном с ней буфере. Я подумал - действительно, смысла нет. Да, строка пишется в Send() но в составе общего блока команды, поэтому в принципе можно и вынести размер в поле. Как будет окончательный вариант, обязательно выложу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 20:01 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorВот вы написали что бред хранить длину строки в одном с ней буфере. никто такого не писал ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 20:11 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorДа, строка пишется в Send() но в составе общего блока команды, поэтому в принципе можно и вынести размер в поле. Ты попытался создать строку заточенную под сериализацию. Это излишне. Просто сделай функцию отправки строки в поток: сначала размер, потом содержимое. А строку оставь std::string. Если ты думаешь что в TCP быстрее уйдет одни кусок чем два поменьше, то заблуждаешься. В общем случае в итоге они скорее всего уйдут вместе одним IP-пакетом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 20:12 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
kealon(Ruslan)CiplusorВот вы написали что бред хранить длину строки в одном с ней буфере. никто такого не писал Он буфер выделяет в куче, отсюда грабли 21718321 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 20:16 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorЗависимость имелась ввиду - разбирать с нуля как устроен мир. Если так, то советую начать с ассемблера, это тот самый ноль. Если потом захочется опуститься ниже нуля, то микросхемотехника. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 20:22 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
Dima Tkealon(Ruslan)пропущено... никто такого не писал Он буфер выделяет в куче, отсюда грабли 21718321 он его там вообще не выделяет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 20:27 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
kealon(Ruslan)Dima Tпропущено... Он буфер выделяет в куче, отсюда грабли 21718321 он его там вообще не выделяет Глубоко не вникал, но есть такие строки в коде Код: plaintext 1. 2. 3.
т.е. выделяет, но руки бы оторвать за такое выделение ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2018, 20:33 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
NekZСпасибо Бьярне за перегруженную семантику * и &. В итоге так и смотрится, вызывая когнитивный диссонанс. Пользуясь случаем, позанудствую, что указатели и прочие ссылки надо писать слева, потому что они накладываются справа налево. int*& p - ссылка на указатель на int CiplusorНу.. скажем так с нуля писать НЕ говнокод на сях наверное мало кому под силу :)я думаю: в жизни надо попробовать всё Главное понимать, что ты пишешь и почему именно так ты пишешь. Гораздо хуже, когда человек бездумно учит best practics и перестаёт включать мозги. Да, у него "идеальный код", но в нестандартной ситуации, которой в книжках нет, он быстро садится в лужу. Даже хрен с ней, с лужей - идеальный код не всегда оптимален и безопасен. Лучше один раз пробухаться и осознать гармонию в жизни, чем читать 100 книжек о вреде алкоголя в больших дозах, а потом ещё всех донимать здоровым образом жизни. Dima Tт.е. выделяет, но руки бы оторвать за такое выделениеиногда надо от души самозабвенно поскакать по граблям, чтобы проникнуться ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 05:45 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
Dima Tт.е. выделяет, но руки бы оторвать за такое выделениеЯ правильно понимаю - за то что не используется static_cast? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 09:02 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
CiplusorDima Tт.е. выделяет, но руки бы оторвать за такое выделениеЯ правильно понимаю - за то что не используется static_cast? :) За то что m_Buffer никак не проверяется на NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 09:09 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
http://www.cplusplus.com/reference/cstdlib/malloc/?kw=malloc malloc() If the function failed to allocate the requested block of memory, a null pointer is returned. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 09:10 |
|
Разыменование пустого указателя, который не пустой
|
|||
---|---|---|---|
#18+
http://www.cplusplus.com/reference/cstdlib/malloc/?kw=malloc If the function failed to allocate the requested block of memory Причём она может failed не только потому что память кончилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2018, 05:11 |
|
|
start [/forum/topic.php?fid=57&msg=39724347&tid=2017734]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 265ms |
total: | 400ms |
0 / 0 |