
With the threat of imminent War in the Middle East, and the ugly ramifications of such a war, the offices of the Subversive Associates™ has prepared a very special offering to the world. This was initially a localized poster campaign in OTTAWA, MONTRÉAL and TORONTO, CANADA. But now we have made our anti-war posters available to other like-minded individuals to: DOWNLOAD, PRINT, AND POST.
This is an exercise in Social Geometrics, fun for children of all sexes, creeds, races and religions. We ask that those of you who share our disdain and disgust for war in any shape or form, under any guise or pretense, please take our offering and post them anywhere you deem visible. It is as simple as that!
Of course, participation is not mandatory, but always encouraged. Due to obvious legal implications, The Subversive Associates™ asks that if you choose to engage in the campaign, you are still mindful of the laws of your specific land.
We invite you to send pictures of your effort to: exercise@fotoplus.org
If time and participation permits, those pictures will be displayed in a gallery of graphical dissent.
Our next line looks familiar, except it starts with an asterisk. Again, we're using the star operator, and noting that this variable we're working with is a pointer. If we didn't, the computer would try to put the results of the right hand side of this statement (which evaluates to 6) into the pointer, overriding the value we need in the pointer, which is an address. This way, the computer knows to put the data not in the pointer, but into the place the pointer points to, which is in the Heap. So after this line, our int is living happily in the Heap, storing a value of 6, and our pointer tells us where that data is living.
Posted by: Heneage on January 18, 2004 09:11 PMEach Stack Frame represents a function. The bottom frame is always the main function, and the frames above it are the other functions that main calls. At any given time, the stack can show you the path your code has taken to get to where it is. The top frame represents the function the code is currently executing, and the frame below it is the function that called the current function, and the frame below that represents the function that called the function that called the current function, and so on all the way down to main, which is the starting point of any C program.
Posted by: Ingram on January 18, 2004 09:11 PMLet's take a moment to reexamine that. What we've done here is create two variables. The first variable is in the Heap, and we're storing data in it. That's the obvious one. But the second variable is a pointer to the first one, and it exists on the Stack. This variable is the one that's really called favoriteNumber, and it's the one we're working with. It is important to remember that there are now two parts to our simple variable, one of which exists in each world. This kind of division is common is C, but omnipresent in Cocoa. When you start making objects, Cocoa makes them all in the Heap because the Stack isn't big enough to hold them. In Cocoa, you deal with objects through pointers everywhere and are actually forbidden from dealing with them directly.
Posted by: William on January 18, 2004 09:11 PMInside each stack frame is a slew of useful information. It tells the computer what code is currently executing, where to go next, where to go in the case a return statement is found, and a whole lot of other things that are incredible useful to the computer, but not very useful to you most of the time. One of the things that is useful to you is the part of the frame that keeps track of all the variables you're using. So the first place for a variable to live is on the Stack. This is a very nice place to live, in that all the creation and destruction of space is handled for you as Stack Frames are created and destroyed. You seldom have to worry about making space for the variables on the stack. The only problem is that the variables here only live as long as the stack frame does, which is to say the length of the function those variables are declared in. This is often a fine situation, but when you need to store information for longer than a single function, you are instantly out of luck.
Posted by: Thadeus on January 18, 2004 09:11 PMThe rest of our conversion follows a similar vein. Instead of going through line by line, let's just compare end results: when the transition is complete, the code that used to read:
Posted by: Evan on January 18, 2004 09:11 PM