On 29/09/11 21:00, Sergio Campamá wrote:
> On Thu, Sep 29, 2011 at 3:55 PM, David
> Brown<david.br...@hesbynett.no>wrote:
>
>> On 29/09/11 20:52, Sergio Campamá wrote:
>>> Hello,
>>>
>>> I was under the impression that in C you could not do something
>>> like:
>>>
>>> void func(int size) { int array[size]; //something return; }
>>>
>>> But a friend of mine just proved me wrong, using mspgcc...
>>> Searching around we found this to be VLA (variable length array)
>>>  Does this kind of usage fall into dynamic memory? My impression
>>> is that the answer is yes, and therefore it shouldn't be used on
>>> microprocessors, because malloc can cause havoc (as someone told
>>> me some emails ago in this very same group).
>>>
>>> What are your thoughts on VLA? Does it use malloc internally, and
>>> therefore should be avoided?
>>>
>>
>> Variable length arrays are like any other data - they can go in
>> various places.  In a case like this, you have defined a non-static
>> local variable - just like any other non-static local variable, it
>> goes on the stack.  So as long as you are careful not to overflow
>> your stack, this should be fine - it doesn't suffer from the risks
>> you get with malloc (or, more accurately, the risks you get with
>> free), namely unpredictably long delays, fragmented heaps, and no
>> space errors.
>>
> Thanks David. I have been meaning to understand fully well how
> memory works in terms of stack and ram. Is there any text or
> resource available that could help me understand that?
>

It's basic C.  Anything defined with a static lifetime (global data, 
static local data) is statically allocated at fixed memory addresses. 
Anything local to a function is either kept in registers (or removed 
altogether by the optimiser) or put on the stack.  Anything allocated by 
malloc (or standard "new" in C++) goes on the heap.


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to