dynamic-memory-allocation

Small objects allocator

Hello, Has anybody used SmallObjectAllocator from Modern C++ Design by Andrei Alexandrescu in a big project? I want to implement this allocator but I need some opinions about it before using it in my project. I made some tests and it seems very fast, but the tests were made in a small test environment. I want to know how fast it is whe...

dynamic memory allocation teaching materials?

Dear all; Besides the (somewhat dated) papers that appear in Wikipedia's ref section, are there good (teaching) materials that you know of that comprehensively discuss dynamic memory allocation pitfalls, techniques, good practices, etc. in C? Thanks. ...

Windows memory allocation questions.

I am currently looking into malloc() implementation under Windows. But in my research I have stumbled upon things that puzzled me: First, I know that at the API level, windows uses mostly the HeapAlloc() and VirtualAlloc() calls to allocate memory. I gather from here that the Microsoft implementation of malloc() (that which is included ...

App crashes when QList grows too large

Hi. I make an application which has to store a lot of data in memory to improve calculation performance. It is a hierarchy of lists and objects where the top object is a QList<myObject*>. When loading data, a lot of instances of new myObject* are created and added to the list. The memory consumption grows and when it comes to ~1.9Gb the...

Getting the lowest free virtual memory address in windows.

Title says it pretty much all : is there a way to get the lowest free virtual memory address under windows ? I should add that I am interested by this information at the beginning of the program (before any dynamic memory allocation has been done). Why I need it : trying to build a malloc implementation under Windows. If it is not possi...

assign elements in vector declared with new. C++

I am trying to use a large 2D vector which I want to allocate with new (because it is large). if I say: vector< vector<int> > bob; bob = vector< vector<int> >(16, vector<int>(1<<12,0)); bob[5][5] = 777; it works. But if I say: std::vector< std::vector<int> > *mary; mary = new vector< vector<int> >(16, vector<int>(1<<12, 0)); mary[5]...

O* p = new O[5]; What does p point to?

To the first O of the array? ...

SomeClass* initialEl = new SomeClass[5];

Should SomeClass* initialEl = new SomeClass[5]; necessarily compile, assuming SomeClass does not have a non-publicly declared default constructor? Consider: /* * SomeClass.h * */ #ifndef SOMECLASS_H_ #define SOMECLASS_H_ class SomeClass { public: SomeClass(int){} ~SomeClass(){} }; #endif /* SOMECLASS_H_ */ /* * main.c...

How does a new statement allocate heap memory?

private button btnNew=new button(); btnNew.addclickhandler(this); private DataGrid grid; private void onClick(event click) {grid=new DataGrid();} Hello ,I write a code like this sample ,I want to know that every time a user click on btnNew,what is going on in heap and stack memory?for example does a new block in heap memory assign to t...

Resource Pool for a Data Structure

When implementing an elementary data structure like stack, queues, linked list et al. should I create a resource pool(of nodes) by dynamically allocating memory in bunch or should I allocate memory separately every time I need a node? ...

STL erase-remove idiom vs custom delete operation and valgrind

This is an attempt to rewrite some old homework using STL algorithms instead of hand-written loops and whatnot. I have a class called Database which holds a Vector<Media *>, where Media * can be (among other things) a CD, or a Book. Database is the only class that handles dynamic memory, and when the program starts it reads a file form...

Extreme memory usage for individual dynamic allocation

Hi folks, here's a simple test I did on MSVC++ 2010 under windows 7: // A struct with sizeof(s) == 4, e.g 4 bytes struct s { int x; }; // Allocate 1 million structs s* test1 = new s[1000000]; // Memory usage show that the increase in memory is roughly 4 bytes * 1000000 - As expected // NOW! If I run this: for (int i = 0; i < 10000...

How are malloc and free implemented?

Hello I want to implement my own dynamic memory management system in order to add new features that help to manage memory in C++. I use Windows (XP) and Linux (Ubuntu). What is needed to implement functions like 'malloc' and 'free'? I think that I have to use lowest level system calls. For Windows, I have found the funtions: GetProcess...

Runtime allocation of multidimensional array

So far I thought that the following syntax was invalid, int B[ydim][xdim]; But today I tried and it worked! I ran it many times to make sure it did not work by chance, even valgrind didn't report any segfault or memory leak!! I am very surprised. Is it a new feature introduced in g++? I always have used 1D arrays to store matrices by ...

Reding all content from a text file - C

I am trying to read all content from a text file. Here is the code which I wrote. #include <stdio.h> #include <stdlib.h> #define PAGE_SIZE 1024 static char *readcontent(const char *filename) { char *fcontent = NULL, c; int index = 0, pagenum = 1; FILE *fp; fp = fopen(filename, "r"); if(fp) { while((c = ge...

Allocating memory inside loop vs outside loop

Is there noticeable performance penalty for allocating LARGE chunks of heap memory in every iteration of loop? Of course I free it at the end of each iteration. An alternative would be to allocate once before entering the loop, repeatedly using it in all iterations, and eventually freeing it up after exiting the loop. See the code belo...

Where is dynamic memory allocated?

The question was asked to me in an interview and my answer was "computer memory". But where exactly..? is it the Random Access Memory or the hard drive? ...

* glibc detected * realloc(): invalid next size:

I have a problem with realloc function: *** glibc detected *** realloc(): invalid next size: Here is the relevant part of code: char* pathfile = NULL; int tcpargc=6; char *tcpargv[tcpargc]; int it; for (it = 0;it < tcpargc;it++) tcpargv[it] = NULL; ... while (1) { ... if (pathfile == NULL) ...

Shrinking with realloc

I encountered this small piece of code in this question, & wanted to know, Can the realloc() function ever move a memory block to another location, when the memory space pointed to is shrinked? int * a = malloc( 10*sizeof(int) ); int * b = realloc( a, 5*sizeof(int) ); If possible, under what conditions, can I expect b to have an addr...

What are all the ways to allocate memory in C and how do they differ?

I'm aware of the following: malloc calloc realloc What are the differences between these? Why does malloc seem to be used almost exclusively? Are there behavioral differences between compilers? ...