C语言内存管理和内存泄漏