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. Other Discussions
  3. Clever Code
  4. C - address of a pointer

C - address of a pointer

Scheduled Pinned Locked Moved Clever Code
lounge
14 Posts 7 Posters 5 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.
  • L Leisuresuit Larry

    typedef struct
    {
    int i;
    } MyObj;

    Working code:

    void foo(MyObj* pObj)
    {
    /* pObj points to a valid struct */
    doSomething(&pObj);
    pObj->i = ...
    }

    Code that caused random crash:

    void foo(MyObj* pObj)
    {
    MyObj* p = pObj;
    doSomething(&p);
    pObj->i = ...
    }

    Reason:

    void doSomething(MyObj** p)
    {
    free(*p);
    *p = createNewObj();
    }

    M Offline
    M Offline
    Mladen Jankovic
    wrote on last edited by
    #4

    Leisuresuit Larry wrote:

    Reason:

    void doSomething(MyObj** p)
    {
    free(*p);
    *p = createNewObj();
    }

    As subtle as a 10 lb. sledge hammer. ;P

    [Genetic Algorithm Library]

    P J 2 Replies Last reply
    0
    • L Leisuresuit Larry

      It would be subtle if doSomething function were 200 lines instead of 2. :)

      CPalliniC Offline
      CPalliniC Offline
      CPallini
      wrote on last edited by
      #5

      Tell Mladen [^]. :-D

      If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
      This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
      [My articles]

      In testa che avete, signor di Ceprano?

      1 Reply Last reply
      0
      • L Leisuresuit Larry

        typedef struct
        {
        int i;
        } MyObj;

        Working code:

        void foo(MyObj* pObj)
        {
        /* pObj points to a valid struct */
        doSomething(&pObj);
        pObj->i = ...
        }

        Code that caused random crash:

        void foo(MyObj* pObj)
        {
        MyObj* p = pObj;
        doSomething(&p);
        pObj->i = ...
        }

        Reason:

        void doSomething(MyObj** p)
        {
        free(*p);
        *p = createNewObj();
        }

        P Offline
        P Offline
        Paul Conrad
        wrote on last edited by
        #6

        Would not really consider that subtle at all.

        "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon

        1 Reply Last reply
        0
        • M Mladen Jankovic

          Leisuresuit Larry wrote:

          Reason:

          void doSomething(MyObj** p)
          {
          free(*p);
          *p = createNewObj();
          }

          As subtle as a 10 lb. sledge hammer. ;P

          [Genetic Algorithm Library]

          P Offline
          P Offline
          Paul Conrad
          wrote on last edited by
          #7

          :laugh:

          "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon

          1 Reply Last reply
          0
          • L Leisuresuit Larry

            typedef struct
            {
            int i;
            } MyObj;

            Working code:

            void foo(MyObj* pObj)
            {
            /* pObj points to a valid struct */
            doSomething(&pObj);
            pObj->i = ...
            }

            Code that caused random crash:

            void foo(MyObj* pObj)
            {
            MyObj* p = pObj;
            doSomething(&p);
            pObj->i = ...
            }

            Reason:

            void doSomething(MyObj** p)
            {
            free(*p);
            *p = createNewObj();
            }

            S Offline
            S Offline
            StevenWalsh
            wrote on last edited by
            #8

            Its not subtle, but he learned... so its a good post

            1 Reply Last reply
            0
            • M Mladen Jankovic

              Leisuresuit Larry wrote:

              Reason:

              void doSomething(MyObj** p)
              {
              free(*p);
              *p = createNewObj();
              }

              As subtle as a 10 lb. sledge hammer. ;P

              [Genetic Algorithm Library]

              J Offline
              J Offline
              Jorgen Sigvardsson
              wrote on last edited by
              #9

              Mladen Jankovic wrote:

              10 lb. sledge hammer

              That's not a very manly sledge hammer now, is it? ;)

              -- Kein Mitleid Für Die Mehrheit

              M P 2 Replies Last reply
              0
              • J Jorgen Sigvardsson

                Mladen Jankovic wrote:

                10 lb. sledge hammer

                That's not a very manly sledge hammer now, is it? ;)

                -- Kein Mitleid Für Die Mehrheit

                M Offline
                M Offline
                Mladen Jankovic
                wrote on last edited by
                #10

                If it is about to hit you, it doesn't matter :)

                [Genetic Algorithm Library]

                1 Reply Last reply
                0
                • J Jorgen Sigvardsson

                  Mladen Jankovic wrote:

                  10 lb. sledge hammer

                  That's not a very manly sledge hammer now, is it? ;)

                  -- Kein Mitleid Für Die Mehrheit

                  P Offline
                  P Offline
                  Paul Conrad
                  wrote on last edited by
                  #11

                  No, it's not. You need a minimum 16 pound sledge hammer to get anything done. Had an old back patio, tried a 8 pound one, it just bounced off the concrete, but the 16 pounder, was a more productive story :rolleyes:

                  "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon

                  D M 2 Replies Last reply
                  0
                  • P Paul Conrad

                    No, it's not. You need a minimum 16 pound sledge hammer to get anything done. Had an old back patio, tried a 8 pound one, it just bounced off the concrete, but the 16 pounder, was a more productive story :rolleyes:

                    "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon

                    D Offline
                    D Offline
                    Dan Neely
                    wrote on last edited by
                    #12

                    Paul Conrad wrote:

                    No, it's not. You need a minimum 16 pound sledge hammer to get anything done.

                    Depends what you're trying to do. Even a baby sledge will bust up thinner cast aluminum; when combined with a chisel up to at least a half inch thick. Probably more but I haven't had occasion to try since my early teens.

                    Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall

                    P 1 Reply Last reply
                    0
                    • D Dan Neely

                      Paul Conrad wrote:

                      No, it's not. You need a minimum 16 pound sledge hammer to get anything done.

                      Depends what you're trying to do. Even a baby sledge will bust up thinner cast aluminum; when combined with a chisel up to at least a half inch thick. Probably more but I haven't had occasion to try since my early teens.

                      Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall

                      P Offline
                      P Offline
                      Paul Conrad
                      wrote on last edited by
                      #13

                      True, but using larger sledgehammers have more potential for more man points :-D

                      "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon

                      1 Reply Last reply
                      0
                      • P Paul Conrad

                        No, it's not. You need a minimum 16 pound sledge hammer to get anything done. Had an old back patio, tried a 8 pound one, it just bounced off the concrete, but the 16 pounder, was a more productive story :rolleyes:

                        "The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon

                        M Offline
                        M Offline
                        Mladen Jankovic
                        wrote on last edited by
                        #14

                        Paul Conrad wrote:

                        tried a 8 pound one, it just bounced off the concrete

                        Amateurs! :)

                        [Genetic Algorithm Library]

                        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