[video output=day3 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=intro-to-c title="Intro to C on Windows - Day 3" vod_platform=youtube id=T4CjOB0y9nI annotator=jacebennett annotator=theinternetftw]
[1:16][Today: Memory]
[2:38][Programming = Modifying Memory]
[4:55][Recap of our program]
[5:45][Brief note on the compiler warnings]
[6:35][Okay: Where are the bits?]
[8:05][Pointers. C lets you talk about memory.]
[9:55][The syntax of Pointers: * and &]
[12:01][Memory addresses, Virtual Memory]
[15:11][How Virtual Memory Works]
[17:39][The consequences of Virtual Memory]
[18:40][Looking at pointers in the watch window]
[21:04][The memory window]
[22:13][Changing memory manually via the debugger]
[23:34][C: the power of no protection]
[24:23][A caveat: can't touch memory you don't own yet]
[25:27][Getting close to the metal is awesome]
[26:16][Where did this initial memory come from?]
[26:55][The Stack]
[28:11][Why the stack makes sense (calls and returns)]
[31:11][Let's watch the stack go]
[33:32][Debug mode memory cruft]
[36:17][Memory moving around (Stack randomization / ASLR)]
[38:19][Everything we'll do is about touching memory]
[38:38][Memory control = super powers]
[39:04][Where code is in memory \[n.b. watch the q&a to see this work\]]
[41:57][Pictures!]
[42:47][Making the trailer]
[43:45][Centimeters matter to CPUs (thanks, speed of light!)]
[50:35][Why it's important to know that]
[51:36][Applying the same idea to PCIe]
[52:40][Latency vs. Throughput/Bandwidth]
[56:09][The Cache]
[1:00:51][The cache miss, and the horror of... the swap!]
[1:03:07][One more time, today's moral: everything we do is poking memory]
[/video]
