I'm doing a compiler design class on the topic of memory management. I am reading about garbage collection and noticed that most of that low level stuff takes place with C/C++ code. I have a few questions about the c# compiler.

1. Was .net framework part for memory
management written in c/c++?
2. How does .net manages memory?
3. Does their internal garbage
collection uses malloc()?
4. What method of garbage collection
does the .net framework use?

I'd probably use answers to generate new questions but I'm not sure If I should create a new question or edit this one.