多项选择题

在使用C#语言开发中,有关堆和栈描述正确的是()

A.栈由编译器自动分配、释放。在函数体中定义的变量通常在栈上
B.堆内存需要GC回收
C.栈内存需要GC回收
D.一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上