Live data from Hacker News

Massacring C Pointers

wozniak.ca

1–10 of 300 posts

Re: Massacring C Pointers

#2
est a, cursus sodales sapien. Nunc euismod tortor sit amet lectus accumsan, et pulvinar nisl faucibus. Pellentesque eget nulla consectetur metus tempor cursus. Duis luctus molestie consectetur. Donec nec malesuada lectus. In mollis mattis ipsum. Fusce tristique molestie accumsan. Nulla id nunc elit. Pellentesque molestie metus eu ullamcorper dictum.

Curabitur congue nec lectus viverra lacinia. Praesent finibus posuere enim, et dapibus mauris blandit vitae. Pellentesque sed lobortis nibh. Ut vel nibh a lorem egestas vehicula. Nulla pharetra ultricies dui, a elementum ex iaculis ac. Pellentesque sed purus ut nisl facilisis accumsan. Aenean sit amet dui molestie, scelerisque mauris nec, imperdiet nulla. Donec pharetra dignissim urna, nec porta metus fringilla et. Morbi non dui a lectus ultricies vestibulum sit amet et justo. Etiam purus neque, vulputate id feugiat in, cursus at velit.

Integer in nulla at nibh ullamcorper congue hendrerit eu ante. Duis eu est leo. Maecenas scelerisque imperdiet blandit. Duis velit urna, facilisis ut euismod ut, luctus sed urna. Ut quis nisi bibendum, faucibus risus quis, fringilla risus. Ut odio dolor, porta sed consequat ut, mattis non ante. Quisque a ligula non lectus lacinia tristique sed in sapien. Mauris aliquet sed mi non commodo. Pellentesque semper a erat vel semper. Sed consequat cursus fermentum. Sed eu velit accumsan, viverra eros vitae, fringilla risus. Nunc ut leo id mauris consectetur volutpat. Fusce nec eleifend urna.

Ut consequat vitae velit ac imperdiet. Nunc rhoncus vehicula libero, id finibus dui egestas at. Donec laoreet erat eget lobortis commodo. Aliquam at felis fringilla, vehicula est a, aliquet purus. Praesent ullamcorper dui porttitor, sodales ante id, mattis lacus. Quisque pretium dolor mi, vel placerat dui rhoncus sollicitudin. Vivamus tincidunt turpis a ante ultricies placerat. Mauris dapibus orci elementum lorem ultricies varius. Aenean commodo facilisis nisi, id egestas lectus tempus vitae. Aenean id ante at nisi vestibulum ornare. Nunc pulvinar ex augue, eu ultricies ligula vehicula a. Vivamus tempus, massa sit amet interdum egestas, elit ligula congue ligula, vel suscipit turpis sem in est. In eu elit massa. Mauris mauris leo, lobortis sed sollicitudin non, consequat vitae augue. In sed arcu eget quam dapibus hendrerit.

Sed et egestas dui. Cras sed turpis tempor, interdum enim ornare, tempor mauris. Sed id tempor ante, in semper arcu. Praesent sollicitudin quam at sem consequat, vitae lobortis neque rutrum. Cras nec sollicitudin arcu. Morbi purus ante, elementum quis sapien ac, fermentum imperdiet sapien. Proin et accumsan est. Aenean tellus elit, tempus vitae dictum sed, condimentum in ligula. Maecenas rhoncus, libero ac efficitur iaculis, lacus ipsum vulputate nisl, at vulputate magna libero consequat magna. Phasellus consequat molestie nisl, vel aliquet ante ultrices non. Morbi rutrum vestibulum semper. Ut suscipit tincidunt velit, eu posuere ligula vulputate sit amet. Cras nec blandit tortor, a facilisis ipsum. Donec lacinia, metus maximus elementum porta, lacus nibh viverra lorem, nec faucibus nulla ipsum sit amet nulla.

Etiam nunc tortor, volutpat non blandit at, porta et felis. Nunc malesuada ante ac sodales viverra. Mauris sollicitudin elit at iaculis iaculis. Sed sit amet velit sit amet eros rhoncus feugiat vel ut dolor. Morbi dignissim libero risus, id posuere ex cursus non. Cras urna nunc, pretium non efficitur et, cursus a leo. Ut efficitur euismod purus, eu commodo velit. Mauris sit amet auctor nunc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed laoreet semper massa, et aliquam lorem cursus a. Nulla pretium egestas sem ac finibus.

Proin fringilla accumsan tortor sed dignissim. In a lectus dui. Vivamus a placerat justo, eget condimentum diam. Proin porttitor ex a ex vehicula suscipit. In suscipit condimentum leo, vel suscipit diam suscipit ornare. Pellentesque pretium pretium massa ac posuere. Nulla pulvinar urna in fermentum tristique. Sed tortor erat, fermentum non ex non, bibendum pretium augue. Donec non consectetur quam, et blandit leo. Aliquam aliquam turpis rhoncus libero rhoncus, molestie pellentesque lectus dignissim. Quisque efficitur urna pulvinar accumsan ultricies. Nulla id ligula id metus suscipit sagittis. In libero nibh, facilisis vitae pellentesque eu, volutpat at purus. Morbi vel velit ut metus facilisis molestie. Duis vestibulum arcu id sapien molestie, sed ornare odio sollicitudin.

Proin gravida vehicula dolor a placerat. Donec vel scelerisque odio. Sed venenatis, erat sed sagittis maximus, massa turpis ullamcorper eros, a malesuada nisl massa sed felis. Aliquam sed dui ultrices orci bibendum elementum ac vel turpis. Pellentesque viverra nec dui vitae dignissim. Cras maximus mi felis, vel efficitur tellus suscipit at. Integer mollis magna dui, at luctus quam eleifend id. Curabitur vel efficitur risus.

Quisque sit amet malesuada magna. Fusce pretium iaculis nibh a elementum. In hac habitasse platea dictumst. Vestibulum feugiat dapibus neque et pulvinar. Fusce ac placerat leo. Nullam commodo ultricies augue, et pharetra justo rutrum et. Vestibulum non lectus ipsum. Donec mattis varius orci, vel laoreet ex hendrerit ut. Nunc viverra nibh neque, sit amet semper ex ultricies vel. Suspendisse hendrerit mauris ut sollicitudin commodo. Ut scelerisque elit in risus faucibus, at feugiat elit pulvinar.

Integer porta eget purus vitae consectetur. Donec mattis pellentesque egestas. Proin at tortor ipsum. Suspendisse pharetra, ante in semper interdum, diam neque porta elit, a luctus est dolor ac enim. Cras maximus eu elit eu gravida. Sed dapibus dignissim imperdiet. In volutpat ante mauris, at convallis sem tincidunt eu. Suspendisse rhoncus feugiat rhoncus. Ut maximus enim ut convallis varius.

Phasellus vitae lectus libero. Morbi ipsum ipsum, egestas quis elit at, placerat consectetur ligula. Nulla ac maximus nibh, sed rhoncus leo. Nunc et commodo lectus. Nunc aliquet tristique lacus, eu consectetur lacus dapibus at. Aliquam dictum ex urna, sit amet accumsan sapien iaculis et. Curabitur rhoncus, ipsum eget dictum facilisis, odio nisi tempor magna, id volutpat orci elit sed lorem. Sed iaculis neque lacus, vel interdum nisl pulvinar in. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur commodo purus vel ipsum posuere tempus. Integer ac iaculis velit.

Integer viverra justo diam, nec molestie sem tristique nec. Fusce tempor quam vel ultrices convallis. Quisque purus ex, molestie non libero non, tincidunt aliquet metus. Praesent posuere finibus ante, in vehicula augue. In vehicula orci vel consequat feugiat. In ultricies ornare sollicitudin. Sed ut vulputate nisi. Nulla lacinia, nibh eu eleifend posuere, mauris velit luctus dui, non congue turpis leo vitae sapien. Proin mauris risus, vehicula in tortor sed, volutpat porta elit. Sed elementum, leo sollicitudin consequat rhoncus, odio nulla mollis odio, eget facilisis arcu est et dolor. Sed sit amet tellus dignissim odio sagittis venenatis. Phasellus luctus congue ligula ut varius. Sed ultricies purus sit amet lacus elementum, ut fringilla turpis volutpat.

Nam volutpat nisl dictum erat varius, nec eleifend urna fermentum. Proin cursus elit tortor, quis dictum felis iaculis vitae. Curabitur feugiat aliquam magna, a vehicula leo auctor vitae. Donec malesuada, dolor at imperdiet pretium, ante ex tempus enim, eget viverra nisl leo pellentesque dui. Aliquam id pretium ante, eu maximus orci. Duis iaculis non turpis vitae ullamcorper. Suspendisse vitae magna pretium, malesuada nibh malesuada, aliquam quam. Integer vestibulum, massa eu ultrices porta, quam est hendrerit magna, in euismod nulla metus sit amet velit. Nunc cursus lobortis orci non vestibulum.

Mauris a convallis turpis. Fusce sit amet nulla eu nunc interdum ultricies nec in metus. Pellentesque fermentum dui eu purus scelerisque, vitae congue diam finibus. Sed iaculis eros lorem, at bibendum libero consectetur in. Etiam pretium justo sit amet lectus pharetra eleifend. Vivamus pulvinar a libero ac dictum. Sed dui massa, dignissim eget dolor eu, accumsan congue odio. Suspendisse convallis lectus aliquam neque hendrerit, fermentum lobortis diam mollis. In hendrerit, massa sit amet volutpat hendrerit, diam quam vulputate diam, placerat gravida lacus velit vel eros. Donec aliquam porta nibh nec pulvinar. Phasellus consequat est justo, in maximus ex molestie in. Duis gravida odio nibh, non condimentum libero mattis ut.

Donec ut accumsan risus, vitae consequat magna. Duis ullamcorper est dolor, id pretium turpis hendrerit vel. Nulla faucibus leo sit amet sem tincidunt, a maximus justo vestibulum. Interdum et malesuada fames ac ante ipsum primis in faucibus. S

Re: Massacring C Pointers

#4
Yesterday I encountered a similar program on a HN comment chain as shown in this link. I am genuinely confused as to why this program is bad. I am a student and I do not know the best practices regarding pointers, but it is how I would write a program to combine two strings.

Can someone please elaborate why it is bad? Are their any good resources to fill gaps in my knowledge?

Thanks in advance.

Edit: Thank you guys for pointing out so many problems. It seems that I have a lot to learn. :)

Re: Massacring C Pointers

#5

Yesterday I encountered a similar program on a HN comment chain as shown in this link. I am genuinely confused as to why this program is bad. I am a student and I do not know the best practices regarding pointers, but it is how I would write a program to combine two strings. Can someone please elaborate why it is bad? Are their any good resources to fill gaps in my knowledge? Thanks in advance. Edit: Thank you guys f…

The C syntax is a bit too dated for me, but I think it returns a pointer to a stack buffer (which is capped at 100 bytes, so it could overflow) and goes through s twice? Plus it's not concise at all.

Re: Massacring C Pointers

#6

Yesterday I encountered a similar program on a HN comment chain as shown in this link. I am genuinely confused as to why this program is bad. I am a student and I do not know the best practices regarding pointers, but it is how I would write a program to combine two strings. Can someone please elaborate why it is bad? Are their any good resources to fill gaps in my knowledge? Thanks in advance. Edit: Thank you guys f…

It returns the result r, which is a temporary, stack allocated array that becomes undefined by the time your return from the function. That’s the worst violation.

Furthermore, r is a fixed 100 bytes. There is no overflow checking whatsoever.

Re: Massacring C Pointers

#7
post #3

I always wondered about the C tutorials Brian Kernigan mentions in his talk ( https://www.youtube.com/watch?v=8SUkrR7ZfTA ) , many of the examples seem intentionally designed to be incorrect by some trickster spirit. Now I know the even darker truth.

Thanks for sharing! I didn't know of that video until now, seems like a really good resource on its own and probably worth sharing on HN (as a post).

Re: Massacring C Pointers

#8

Yesterday I encountered a similar program on a HN comment chain as shown in this link. I am genuinely confused as to why this program is bad. I am a student and I do not know the best practices regarding pointers, but it is how I would write a program to combine two strings. Can someone please elaborate why it is bad? Are their any good resources to fill gaps in my knowledge? Thanks in advance. Edit: Thank you guys f…

Besides stylistic (dang, that code is hard to read), efficiency (it scans through s twice), and safety (it will do bad things if the combined length is > 100) concerns, it's also just plain wrong:

It returns a pointer to memory on the stack; but the stack will shrink when the function returns, and that piece of memory will get re-used. Which is consistent with the article's later claim that "I don’t think he understands the call stack."

Re: Massacring C Pointers

#9

Yesterday I encountered a similar program on a HN comment chain as shown in this link. I am genuinely confused as to why this program is bad. I am a student and I do not know the best practices regarding pointers, but it is how I would write a program to combine two strings. Can someone please elaborate why it is bad? Are their any good resources to fill gaps in my knowledge? Thanks in advance. Edit: Thank you guys f…

Not a C programmer, so I'm sure I'm missing a ton of more subtle issues, but some of the immediate questions to ask:

* What happens if s or t are longer than 100 characters?

* What happens if s and t are both longer than 50 characters?

* What happens if no element of s == '\0'? How about t?

* r is allocated on the stack. What happens to the memory pointed at by r when you call another function after calling combine? Say you wanted to combine three strings; could you call combine twice to build up the result?

Re: Massacring C Pointers

#10
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. - Dijkstra, "How do we tell truths that might hurt?" (1975)

The author, Traister, has came from BASIC. We have the explanation.

Post reply on HN