|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
вот C у нас есть имеется деректива define #define IN 1 в результате в тексте программы любое IN будет замещено на 1. (поправьте если не точен) всю работу осуществляют 2 функции, манипулирующие с именами и замещающими их текстами. Это install(s,t), которая записывает имя s и замещающий его текст t в таблицу, где s и t - строки, и lookup(s), осуществляющая поиск s в таблице и возвращающая указатель на место, где имя s было найдено, или NULL, если s в таблице не оказалось. Сам алгоритм основан на хэш-поиске: поступающее имя свертывается в неотрицательное число (хэш-код), которое затем используется в качестве индекса в массиве указателей. Каждый элемент этого массива является указателем на начало связанного списка блоков, описывающих имена с данным хэш-кодом. Если элемент массива равен NULL, это значит, что имен с соответствующим хэш-кодом нет (кстати , как вам перевод 3-го издания книги ? :) ) код прилагаю. Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68.
суть кода понимаю . но есть 2 вопроса : 1. будет ли (nlist*)malloc(sizeof(*np)) аналогично (nlist*)malloc(sizeof(nlist)) ? мне больше нравится вариант (nlist*)malloc(sizeof(nlist)), но верно ли ? 2. вот таким образом "free((void*)np->defn);" уничтожается "строка" которая была зарезервирована mystrdup. вопрос зачем идет преобразование первого указателя на первый символ в (void*) ? это авторы не объясняют. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 21:32 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
andron81, сорян за орф. ошибку в названии темы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 21:45 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
** удалено ** ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 23:46 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
1. будет ли (nlist*)malloc(sizeof(*np)) аналогично (nlist*)malloc(sizeof(nlist)) ? мне больше нравится вариант (nlist*)malloc(sizeof(nlist)), но верно ли ? да 2. вот таким образом "free((void*)np->defn);" уничтожается "строка" которая была зарезервирована mystrdup. вопрос зачем идет преобразование первого указателя на первый символ в (void*) ? это авторы не объясняют. Ни зачем, просто так. блаж автора кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 00:35 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
по поводу первого вопроса, будет одно и то же https://en.cppreference.com/w/c/memory/free int main(void) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
это моя любимая часть кода, но я так пока не могу Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 00:44 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
MasterZiv, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 08:38 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
mini.weblab это моя любимая часть кода, но я так пока не могу Код: plaintext 1. 2. 3. 4.
спасибо , но поясните свой сарказм, пожалуйста :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 08:39 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
andron81, я где-то час думала, как и почему это работает, пока не обратила внимание на присваивание внутри if вынос мозга этот код ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 15:51 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
mini.weblab, ну да . книжка суровая и старая:) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 17:01 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
mini.weblab andron81, я где-то час думала, как и почему это работает, пока не обратила внимание на присваивание внутри if вынос мозга этот код А зачем вам всё это нужно? Вы же вроде бы веб-разработчик? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 17:08 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
petrav, так классный код же! (правда, я не знаю как такое возможно было бы читать без комментов) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 18:40 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
mini.weblab petrav, так классный код же! (правда, я не знаю как такое возможно было бы читать без комментов) Привычка нужна. Я прочёл моментально. Я имею ввиду: зачем вам изучать Си, да ещё и часами думать над чем-то там по поводу Си? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2020, 19:03 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
petrav, ну вообще-то, я начала с Unix/Linux (по работе и по интересам) следующий шаг это С (потому что иначе дальше никак) чтобы разобраться - нужно думать, и часами, и днями, и неделями (потому что иначе дальше никак) а с этим конкретным примером, я разобралась для самоконтроля ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2020, 01:27 |
|
пара вопросов по maloc и free.
|
|||
---|---|---|---|
#18+
mini.weblab petrav, ну вообще-то, я начала с Unix/Linux (по работе и по интересам) следующий шаг это С (потому что иначе дальше никак) чтобы разобраться - нужно думать, и часами, и днями, и неделями (потому что иначе дальше никак) а с этим конкретным примером, я разобралась для самоконтроля Это классика С Код: plaintext 1. 2. 3.
Как говорила моя учитель по PL/1 "перфокарту нужно бить до конца, иначе колода может оказаться неподъёмной". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2020, 09:04 |
|
|
start [/forum/topic.php?fid=57&msg=39981202&tid=2017381]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 144ms |
0 / 0 |