Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error in a Wikipedia Article on memory leaks [closed]

At the end of this wikipedia article, in a section "A simple example in C" it is claimed that "the operating system delays real memory allocation until something is written into it". From my experience this is not possible or better put, "not feasible". An OS/Processor does not track each and every memory write. Is the wikipedia article wrong like I suspect ? If not enlighten me.

edit

I guess when one takes page faults into consideration, than it does make sense in some ways. However, page faults and virtual memory don't fit well with a discussion on memory leaks. I mean is if process allocates 2 pages, writes to one (page one), and then leaks both pages it's still a leak regardless of weather the second page leaks physical memory or not. I guess the section should differentiate between physical memory and virtual memory ? :D

like image 508
Hassan Syed Avatar asked Apr 16 '11 20:04

Hassan Syed


People also ask

What kind of error occurred due to memory leak?

A memory leak reduces the performance of the computer by reducing the amount of available memory. Eventually, in the worst case, too much of the available memory may become allocated and all or part of the system or device stops working correctly, the application fails, or the system slows down vastly due to thrashing.

How do we avoid memory leaks in closures?

Only capture variables as unowned when you can be sure they will be in memory whenever the closure is run, not just because you don't want to work with an optional self . This will help you prevent memory leaks in Swift closures, leading to better app performance.

How do you prove memory leaks?

To find a memory leak, you've got to look at the system's RAM usage. This can be accomplished in Windows by using the Resource Monitor. In Windows 11/10/8.1: Press Windows+R to open the Run dialog; enter "resmon" and click OK.


1 Answers

Depends on the operating system. On Linux, for example, it actually does work like that. Look up "optimistic memory allocation".

In addition to that, there is the differentiation between virtual memory and physical memory. On most operating systems, you are using virtual memory, so even though you allocate many megabytes worth of memory, the actual physical memory will only be tapped once you write into it (at which point what had been at that location before might get paged back to disk).

There is the "virtual address space" which is basically just "logical" memory that is then later mapped to the physical RAM (or your hard drive, if the memory has been paged out).

like image 155
EboMike Avatar answered Sep 20 '22 22:09

EboMike