Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. C++ is love

C++ is love

Scheduled Pinned Locked Moved The Lounge
csharpc++
86 Posts 24 Posters 11 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W W Balboos GHB

    Back in the days of yore, when I did my C programming, I discovered alloca(). Used inside of functions, instead of malloc() (for example), it would free allocated memory when you left the function. I didn't look into the workings but I'd presume it used the stack for memory. Update: Quick Search [^] and it's in C++, too - and it does use the stack for allocatons.

    Ravings en masse^

    "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

    "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

    D Offline
    D Offline
    den2k88
    wrote on last edited by
    #4

    W∴ Balboos, GHB wrote:

    I'd presume it used the stack for memory.

    Yep, exactly. I had the habit of making objects "stackable" whenever possible, for example strings had fixed size straight into the struct, so the whole object was a single contiguous dataspace easily allocatable in the stack and passed around with a memcpy. Of course it isn't alwasy the best option but I like it when it is.

    GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

    W K 2 Replies Last reply
    0
    • D den2k88

      W∴ Balboos, GHB wrote:

      I'd presume it used the stack for memory.

      Yep, exactly. I had the habit of making objects "stackable" whenever possible, for example strings had fixed size straight into the struct, so the whole object was a single contiguous dataspace easily allocatable in the stack and passed around with a memcpy. Of course it isn't alwasy the best option but I like it when it is.

      GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

      W Offline
      W Offline
      W Balboos GHB
      wrote on last edited by
      #5

      Some of the references warn against its use. So far as I can tell, it's based upon usage and gotcha's that are common in C - in other words, C is for grownup who take responsibility for their actions. Simply put - know what you're doing when you do it. Don't free() it - well, duh! That's the point of using it. Beware of stack overflows. Always keep your wits about you with memory usage. Don't use in recursive functions or loops. In a loop, index the allocations into an array of pointers, or, if you want to reuse the same one, allocate it before the loop . . . just like the other memory functions. Seems standard enough - for the grownups in the room

      Ravings en masse^

      "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

      "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

      honey the codewitchH U 2 Replies Last reply
      0
      • honey the codewitchH honey the codewitch

        I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

        Real programmers use butterflies

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #6

        honey the codewitch wrote:

        I needed some garbage-collector like advantages

        Now all you need to do is add heap compacting[^] and maybe heap compression[^]. :-D

        honey the codewitchH 1 Reply Last reply
        0
        • honey the codewitchH honey the codewitch

          I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

          Real programmers use butterflies

          C Offline
          C Offline
          CodeWraith
          wrote on last edited by
          #7

          Blasphemy! Quick, fall on your knees and repent, or you will see hordes with torches and pitchforks gathering. While the .Net guys are not as fanatically religious as Holy Order of the Javaites, they could still burn you like their steaks at a stake (*). (*) FTMS - fixed that myself.

          I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

          1 Reply Last reply
          0
          • honey the codewitchH honey the codewitch

            I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

            Real programmers use butterflies

            J Offline
            J Offline
            Jorgen Andersson
            wrote on last edited by
            #8

            Sounds like you're in regression. Next year you'll be hot for C and after that you'll start a club with Codewraith doing 1802 assembler for your own Zwölf.

            Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

            C D 2 Replies Last reply
            0
            • honey the codewitchH honey the codewitch

              I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

              Real programmers use butterflies

              Sander RosselS Offline
              Sander RosselS Offline
              Sander Rossel
              wrote on last edited by
              #9

              Ok, now give it a name that references literature, something like "Quixote Garbage Collector". Then make a slogan that's inspired by LOTR, maybe "I am Gandalf the White and I've come to collect your garbage" or "There is no curse in Elvish, Entish, or the tongues of Men for this garbage collector." Now live out your life as Facebook, Google, Microsoft or Apple buys you out for quintagazillions$$$ and share some with me :D (For those who miss the joke, read post below)

              Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

              honey the codewitchH C 2 Replies Last reply
              0
              • J Jorgen Andersson

                Sounds like you're in regression. Next year you'll be hot for C and after that you'll start a club with Codewraith doing 1802 assembler for your own Zwölf.

                Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

                C Offline
                C Offline
                CodeWraith
                wrote on last edited by
                #10

                Or you could run in circles, like poor Sander. He hasn't noticed yet because he's still on his first lap. :-)

                I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                1 Reply Last reply
                0
                • Sander RosselS Sander Rossel

                  Ok, now give it a name that references literature, something like "Quixote Garbage Collector". Then make a slogan that's inspired by LOTR, maybe "I am Gandalf the White and I've come to collect your garbage" or "There is no curse in Elvish, Entish, or the tongues of Men for this garbage collector." Now live out your life as Facebook, Google, Microsoft or Apple buys you out for quintagazillions$$$ and share some with me :D (For those who miss the joke, read post below)

                  Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                  honey the codewitchH Online
                  honey the codewitchH Online
                  honey the codewitch
                  wrote on last edited by
                  #11

                  It doesn't really do garbage collection as such. As an analogy imagine the garbage man came once a week and burned your house down. It's much more time and space efficient than taking out the trash. You can't actually delete objects in my scheme, only allocate to pools. You can recycle entire pools though, manually, freeing (invalidating) all pointers (or objects) therein. Doing it that way makes it fast fast fast and it works on constrained memory environments. Also it was easy to code.

                  Real programmers use butterflies

                  Sander RosselS pkfoxP 2 Replies Last reply
                  0
                  • W W Balboos GHB

                    Some of the references warn against its use. So far as I can tell, it's based upon usage and gotcha's that are common in C - in other words, C is for grownup who take responsibility for their actions. Simply put - know what you're doing when you do it. Don't free() it - well, duh! That's the point of using it. Beware of stack overflows. Always keep your wits about you with memory usage. Don't use in recursive functions or loops. In a loop, index the allocations into an array of pointers, or, if you want to reuse the same one, allocate it before the loop . . . just like the other memory functions. Seems standard enough - for the grownups in the room

                    Ravings en masse^

                    "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                    "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                    honey the codewitchH Online
                    honey the codewitchH Online
                    honey the codewitch
                    wrote on last edited by
                    #12

                    Yeah which is why i don't use it. I have StaticMemoryPool<C> which can allocate a fixed amount of data from the heap or the stack (capacity C known at compile time) and DynamicMemoryPool which allocates a capacity specified at runtime, but always from the heap. using dynamic stack allocations is messy because its intertwined with scope. Plus it goes out of scope with the function ends making wrapping it not a thing. Maybe that's why it's warned against. *shrug* I really don't know.

                    Real programmers use butterflies

                    W 1 Reply Last reply
                    0
                    • raddevusR raddevus

                      How much can you sell it for? And/or can you get 1 million (or more) devs to use it? That's our modern (cynical) measure for success so get on board. :rolleyes:

                      honey the codewitchH Online
                      honey the codewitchH Online
                      honey the codewitch
                      wrote on last edited by
                      #13

                      I gave it away under the MIT license. It was just a little bit of code anyway.

                      Real programmers use butterflies

                      raddevusR 1 Reply Last reply
                      0
                      • L Lost User

                        honey the codewitch wrote:

                        I needed some garbage-collector like advantages

                        Now all you need to do is add heap compacting[^] and maybe heap compression[^]. :-D

                        honey the codewitchH Online
                        honey the codewitchH Online
                        honey the codewitch
                        wrote on last edited by
                        #14

                        Then that would be an actual garbage collector, which I'm trying to avoid. :-D Actually what I'm doing is kind of clever. I allow you to allocate a "MemoryPool" on the heap or the stack, and then allocate memory from that pool. It does not allow you to delete. However, all allocated segments are always contiguous and sequential, leading to a number of performance advantages. Instead of deleting single allocations you can freeAll() to reset/recycle the entire pool and invalidate the memory therein. It's actually quite nice for a lot of basic processing scenarios. it's just inefficient for mutable data where sizes can change - which it's not designed for.

                        Real programmers use butterflies

                        J 1 Reply Last reply
                        0
                        • Sander RosselS Sander Rossel

                          Ok, now give it a name that references literature, something like "Quixote Garbage Collector". Then make a slogan that's inspired by LOTR, maybe "I am Gandalf the White and I've come to collect your garbage" or "There is no curse in Elvish, Entish, or the tongues of Men for this garbage collector." Now live out your life as Facebook, Google, Microsoft or Apple buys you out for quintagazillions$$$ and share some with me :D (For those who miss the joke, read post below)

                          Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                          C Offline
                          C Offline
                          CodeWraith
                          wrote on last edited by
                          #15

                          You don't simply collect Garbage in Mordor! :-)

                          I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                          J 1 Reply Last reply
                          0
                          • honey the codewitchH honey the codewitch

                            Yeah which is why i don't use it. I have StaticMemoryPool<C> which can allocate a fixed amount of data from the heap or the stack (capacity C known at compile time) and DynamicMemoryPool which allocates a capacity specified at runtime, but always from the heap. using dynamic stack allocations is messy because its intertwined with scope. Plus it goes out of scope with the function ends making wrapping it not a thing. Maybe that's why it's warned against. *shrug* I really don't know.

                            Real programmers use butterflies

                            W Offline
                            W Offline
                            W Balboos GHB
                            wrote on last edited by
                            #16

                            It's only scope, certainly how I used it, was within the function - scope was never a problem. Memory wasn't humongous, then, so allocations were done with care, anyway. There was expanded and extended memory.* It's built in (usually) and automatic. About the only complaint I found really valid is that it's existence in a compiler is not (or was not) guaranteed as it was an official standard. It happened to be everywhere I was (QuickC, MS-C, Wacom-C) on DOS and NT, manly; Now I live in a stateless world of web development. I will say, however, that with the 400 users, an occasional server request gets an out-of-memory error. I increased it in php.ini a couple of times, but for the most part, the DBA and I share info and he forces filters them to not ask for a million records. A better long-term solution. *I made a page-swapper so I could access lots of it smoothly beyond the 64K in the original page frame.

                            Ravings en masse^

                            "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                            "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                            1 Reply Last reply
                            0
                            • C CodeWraith

                              You don't simply collect Garbage in Mordor! :-)

                              I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                              J Offline
                              J Offline
                              Jorgen Andersson
                              wrote on last edited by
                              #17

                              Garbage shall not pass.

                              Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

                              C 1 Reply Last reply
                              0
                              • J Jorgen Andersson

                                Garbage shall not pass.

                                Wrong is evil and must be defeated. - Jeff Ello Never stop dreaming - Freddie Kruger

                                C Offline
                                C Offline
                                CodeWraith
                                wrote on last edited by
                                #18

                                I reserve that one for some unit test. "YOU ! Shall! Not! Pass!" :-)

                                I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                                1 Reply Last reply
                                0
                                • raddevusR raddevus

                                  How much can you sell it for? And/or can you get 1 million (or more) devs to use it? That's our modern (cynical) measure for success so get on board. :rolleyes:

                                  S Offline
                                  S Offline
                                  Slacker007
                                  wrote on last edited by
                                  #19

                                  raddevus wrote:

                                  How much can you sell it for?

                                  That's capitalism, and htcw does not believe in that. :)

                                  honey the codewitchH 1 Reply Last reply
                                  0
                                  • honey the codewitchH honey the codewitch

                                    I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

                                    Real programmers use butterflies

                                    S Offline
                                    S Offline
                                    Slacker007
                                    wrote on last edited by
                                    #20

                                    Sure, C++ is love, but at what price does this "love" cost? your soul, I am sure. We are talking about C++ here. :laugh:

                                    honey the codewitchH 1 Reply Last reply
                                    0
                                    • honey the codewitchH honey the codewitch

                                      I needed some garbage-collector like advantages without the overhead so I wrote a 123 line file to give me exactly that. I love C++, and right now I don't know why I ever messed with .NET. :thumbsup::thumbsup::thumbsup: I'm usually not one to holy roll about technology but this language absolutely rules. The only downside with it is it hides nothing (and it doesn't parse properly**), but hiding nothing is just as big an advantage as a liability. Oh how I missed you, C++. ** C++ should really be parsed with a GLR parser so you don't have to worry about incomplete types being a thing.

                                      Real programmers use butterflies

                                      P Offline
                                      P Offline
                                      PIEBALDconsult
                                      wrote on last edited by
                                      #21

                                      What's a line of code?

                                      honey the codewitchH 1 Reply Last reply
                                      0
                                      • P PIEBALDconsult

                                        What's a line of code?

                                        honey the codewitchH Online
                                        honey the codewitchH Online
                                        honey the codewitch
                                        wrote on last edited by
                                        #22

                                        magic! :laugh:

                                        Real programmers use butterflies

                                        1 Reply Last reply
                                        0
                                        • honey the codewitchH honey the codewitch

                                          It doesn't really do garbage collection as such. As an analogy imagine the garbage man came once a week and burned your house down. It's much more time and space efficient than taking out the trash. You can't actually delete objects in my scheme, only allocate to pools. You can recycle entire pools though, manually, freeing (invalidating) all pointers (or objects) therein. Doing it that way makes it fast fast fast and it works on constrained memory environments. Also it was easy to code.

                                          Real programmers use butterflies

                                          Sander RosselS Offline
                                          Sander RosselS Offline
                                          Sander Rossel
                                          wrote on last edited by
                                          #23

                                          honey the codewitch wrote:

                                          burned your house down. It's much more time and space efficient than taking out the trash.

                                          How the heck is burning down a house every week efficient? :laugh:

                                          Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

                                          honey the codewitchH 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups