Darnit ! You read my mind ! :P

On Dec 17, 10:06 am, "Brandon Betances" <[email protected]> wrote:
> the stack is like a very organized closet, the heap is just a pile of shit
> on the floor.
>
> On Tue, Dec 16, 2008 at 11:58 PM, Charles A. Lopez
> <[email protected]>wrote:
>
>
>
>
>
> > On Tue, Dec 16, 2008 at 11:10 AM, rbdavidson <[email protected]>wrote:
>
> >> Well, "value types, not datatypes" is not the only difference between
> >> a struct and a class.
>
> >> Structs are allocated off the stack, classes from the heap.  Module
> >> level variables in classes can have default values, in structs they
> >> can't and you have to initialize values in the New().
>
> > Can you refresh my memory and explain the difference between the stack and
> > heap?
>
> >> Also classes have some code overhead that structs don't which results
> >> in a struct instantiating faster than a class.  Not a big deal, unless
> >> you  are doing something like
>
> >> Dim myStruct(100000000) as SomeStruct
>
> >> Vrs
>
> >> dim myClass(100000000) as SomeClass
>
> >> In which case every millisecond counts and structs have the
> >> advantage.  Of course, since structs are value types you can't create
> >> a new struct by inheriting from an existing one.  I.e. You can't
> >> create an extensible "struct hierarchy" like you can with classes.
> >> This limits their usefulness to pretty particular cases.
>
> >> - RBDavidson
>
> >> On Dec 15, 3:18 pm, "Brandon Betances" <[email protected]> wrote:
> >> > Also, the only difference between a struct and a class is that a struct
> >> is
> >> > used for value types, not datatypes, System.Int32 for example is a
> >> struct,
> >> > string is a class.
>
> >> > On Mon, Dec 15, 2008 at 4:11 PM, Brandon Betances <[email protected]
> >> >wrote:
>
> >> > > C# performs garbage collection automatically, but you can call it
> >> > > expilictly with the System.GC.Collect() method.
> >> > > put it where the delete statement is.
>
> >>  > > On Mon, Dec 15, 2008 at 3:18 PM, Alon K <[email protected]> wrote:
>
> >> > >> Hi,
>
> >> > >> I remember that in C++ one had to issue the following statement (or
> >> > >> something similar) to clean up memory:
>
> >> > >> delete pNode;
>
> >> > >> and the memory address assigned to pNode will be unassigned.
> >> > >> Is there something like this that needs to be done in C# ?
>
> >> > >> So for example I have:
>
> >> > >> pHold = pIndex;
> >> > >> pIndex = pIndex->pNext;
> >> > >> delete pHold; ????? <-- what can I do here
>
> >> > >> While on the topic, I have been doing the following to create linked
> >> > >> lists in the intermediate step:
>
> >> > >> NODE* pCreate = stackalloc NODE[1];
> >> > >> pIndex->pNext = pCreate;
> >> > >> pIndex = pCreate;
>
> >> > >> While I haven't programmed in C++ in a while I remember that this
> >> > >> could be done directly in C++:
>
> >> > >> pIndex->(*pNext) = new NODE;
> >> > >> pIndex = pIndex->pNext;
>
> >> > >> Also the code above using stackalloc NODE[1] just feels wrong and as
> >> > >> if I'm using it to do something it wasn't intended to do. Now for the
> >> > >> application it is important to keep the spirit of a linked list and
> >> > >> not an stacked list, meaning I want to be able to move the links
> >> > >> around dynamically.
>
> >> > >> How can I do this correctly, I may not be understanding the
> >> > >> fundamentals of C# (such as how variables are treated). Also NODE is
> >> a
> >> > >> struct, which is different from a Class in C# in terms of data from
> >> my
> >> > >> understanding.
>
> >> > >> Appreciate your help.
>
> >>  > >> -Alon- Hide quoted text -
>
> >> > - Show quoted text -
>
> > --
> > Charles A. Lopez
> > [email protected]
>
> > Bachelor of Arts - Computer Science
> > New York University
>
> > Registered Microsoft Partner
>
> > New York City, NY- Hide quoted text -
>
> - Show quoted text -

Reply via email to