• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • The Proper Way To Deallocate A Pointer

    May 9, 2012 Ted Holt

    Jerry Clower used to tell a story about attending a rattlesnake roundup. He said that people from the humane society were on hand to be sure that the rattlesnakes were killed properly. Mr. Clower remarked that he didn’t know that there was an improper way to kill a rattlesnake. Pointers can be like rattlesnakes, biting you when you don’t expect it. Do you know the proper way to kill a pointer?

    Use the %ALLOC function to allocate memory to a program. The system copies the address of the memory into a pointer variable.

    D SomePointer     s
    D SomeData        s            256a   based(SomePointer)
    
     /free
         SomePointer = %alloc(%size(SomeData));
    

    Now you can store a value in the allocated memory, just as you store values in variables that you define in a program.

    SomeData = 'Rufus T. Firefly';
    

    And when you’re finished with the memory, you can tell the operating system you no longer need it.

    dealloc SomePtr;
    

    However, if you’re not careful, you may inadvertently use the memory that no longer belongs to you, because the pointer still has the value the %ALLOC function assigned to it. The fact that the pointer still has a non-null value could cause big problems, because the system will still allow you to assign values to the based variable, even though that memory is no longer allocated to the program.

    The solution is to use the N extender when you deallocate the memory.

    dealloc(n) SomePtr;
    

    The N extender sets the pointer to null. Now if you try to use the pointer, you will get error MCH3601 (Pointer not set for location referenced.) Using the N extender will let you use code like the following to keep your pointer operations from causing damage.

         if SomePointer <> *null;
            . . . do whatever . . .
         else;
            . . . take care of the error . . .
         endif;
    

    And that is the proper way to kill a pointer.



                         Post this story to del.icio.us
                   Post this story to Digg
        Post this story to Slashdot

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    Cobalt Iron

    Smarter Data Protection with Cobalt Iron Compass

    Compass is the intelligent, cyber-secure data protection platform that supports all your workloads:

    • Cloud
    • On-premises
    • Hybrid

    Automate backup, outsmart ransomware, and scale effortlessly with a modern SaaS solution.  Compass delivers analytics-driven resilience built for ALL workloads – including IBM Power and IBM i.

    Modern protection.  Simplified delivery.  Try it free for 30 days.

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Sponsored Links

    ProData Computer Services:  Save the day with RDR and ProData utilities! Download FREE Trial
    looksoftware:  Webcast - No Limits: The Power of IBM i. Download the video now!
    Four Hundred Monitor Calendar:  Latest info on national conferences, local events, & Webinars

    IT Jungle Store Top Book Picks

    BACK IN STOCK: Easy Steps to Internet Programming for System i: List Price, $49.95

    The iSeries Express Web Implementer's Guide: List Price, $49.95
    The iSeries Pocket Database Guide: List Price, $59
    The iSeries Pocket SQL Guide: List Price, $59
    The iSeries Pocket WebFacing Primer: List Price, $39
    Migrating to WebSphere Express for iSeries: List Price, $49
    Getting Started with WebSphere Express for iSeries: List Price, $49
    The All-Everything Operating System: List Price, $35
    The Best Joomla! Tutorial Ever!: List Price, $19.95

    Safestone Updates Cross-Platform Compliance Tool COMMON Finds Its Happy Spot With IBM i And Disneyland

    Leave a Reply Cancel reply

Volume 12, Number 13 -- May 9, 2012
THIS ISSUE SPONSORED BY:

SEQUEL Software
Help/Systems
CNX

Table of Contents

  • OLAP Is Simple, Once You Understand It
  • The Proper Way To Deallocate A Pointer
  • Admin Alert: Prepping For And Responding To An Unheard Of IBM i #FAIL

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • Learning And Laughing With Scott Forstie And Tim Rowe
  • IBM’s CEO Says GenAI Is Great For Enterprise, But It Will Not Be AGI
  • Guru: A First Look at Bob, The IBM i Assistant That’s Closer Than You Think
  • Happy Holidays To All Of You From All Of Us
  • IBM i PTF Guide, Volume 27, Number 48
  • Bob More Than Just A Code Assistant, IBM i Chief Architect Will Says
  • Stacking Up Entry IBM i-Power11 Systems Against Windows X86 Platforms
  • IBM Brings AI-Enhanced OpenShift Container Platform To Power Systems
  • As I See It: Artificial Integrity
  • IBM i PTF Guide, Volume 27, Number 47

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle