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 -
