Memory Allocation

Memory Allocation

Question:

  • What is the reason that allocated memory should be explicitly deallocated ?
  • Is there any difference in the way the data with different storage types (stack, heap, static memory) are stored ?
  • In the following class:

    class thisClass { int i;public:      thisclass ();};

Is there any reason to declare inside the class a pointer to int instead of int and then allocate memory for that pointer in the constructor?

Answer:
Both C and C++ assume that if you allocate memory dynamically (rather than using static or stack memory), you want the allocated memory to remain valid as long as you haven’t deleted it explicitly. Therefore, this memory is never deallocated automatically; you must do that explicitly. If you find this manual allocation and deallocation too tedious, you don’t have to use dynamic memory at all. Instead, use STL containers, auto_ptr, and stack memory. Most C++ programmers overuse (if not abuse) dynamic memory unnecessarily and this is the most fertile source of bugs.

There are certain differences between dynamic memory and other types of memory: dynamic memory is usually stored in a heap structure. Therefore, every allocation request returns a higher memory address. By contrast, stack memory is ordered top-down. Every subsequent stack block has a lower address. There are other differences among the three storage types of C++: static objects are always zero-initialized, whereas stack and heap memory data aren’t zero initialized by default. The memory alignment of each storage type might be different as well.

If the size of a variable is known at design or implementation time, there’s no reason to allocate it dynamically. Rememebr that dyanamic allocation incurs extra runtime overhead and might introduce bugs, for exmaple, if you forget to delete the allocated memory or if you try to write to a pointer whose memory has been deleted.

Share the Post:
XDR solutions

The Benefits of Using XDR Solutions

Cybercriminals constantly adapt their strategies, developing newer, more powerful, and intelligent ways to attack your network. Since security professionals must innovate as well, more conventional endpoint detection solutions have evolved

AI is revolutionizing fraud detection

How AI is Revolutionizing Fraud Detection

Artificial intelligence – commonly known as AI – means a form of technology with multiple uses. As a result, it has become extremely valuable to a number of businesses across

AI innovation

Companies Leading AI Innovation in 2023

Artificial intelligence (AI) has been transforming industries and revolutionizing business operations. AI’s potential to enhance efficiency and productivity has become crucial to many businesses. As we move into 2023, several

data fivetran pricing

Fivetran Pricing Explained

One of the biggest trends of the 21st century is the massive surge in analytics. Analytics is the process of utilizing data to drive future decision-making. With so much of

kubernetes logging

Kubernetes Logging: What You Need to Know

Kubernetes from Google is one of the most popular open-source and free container management solutions made to make managing and deploying applications easier. It has a solid architecture that makes

ransomware cyber attack

Why Is Ransomware Such a Major Threat?

One of the most significant cyber threats faced by modern organizations is a ransomware attack. Ransomware attacks have grown in both sophistication and frequency over the past few years, forcing

data dictionary

Tools You Need to Make a Data Dictionary

Data dictionaries are crucial for organizations of all sizes that deal with large amounts of data. they are centralized repositories of all the data in organizations, including metadata such as