C 这两种内存分配之间有什么区别?

C 这两种内存分配之间有什么区别?,c,memory,memory-management,buffer,C,Memory,Memory Management,Buffer,char str[10]和char*str=char*malloc10之间有什么区别?据我所知,它们不是都为一个字符数组分配了10个字节吗?char str[10]在堆栈上分配内存。char*str=char*malloc10在堆上分配内存。堆栈和堆存储在计算机的RAM中 char-str[10] 全局静态范围-根据初始化在.data或.bss段中分配。无法在程序终止前释放 本地自动作用域-通常是大多数实现,但C标准并不反对在堆栈上分配的堆栈。当程序离开作用域时自动释放 二, char*str=

char str[10]和char*str=char*malloc10之间有什么区别?据我所知,它们不是都为一个字符数组分配了10个字节吗?

char str[10]在堆栈上分配内存。char*str=char*malloc10在堆上分配内存。堆栈和堆存储在计算机的RAM中

char-str[10]

全局静态范围-根据初始化在.data或.bss段中分配。无法在程序终止前释放

本地自动作用域-通常是大多数实现,但C标准并不反对在堆栈上分配的堆栈。当程序离开作用域时自动释放

二,

char*str=malloc10


在堆上分配。需要由程序使用free函数释放

如果char str[10]在函数外部使用,则它是一个全局变量。内存由编译器分配,在初始化时可能成为二进制文件的一部分。如果在函数内部使用char str[10],则每次输入函数并在返回时释放时,都会在堆栈上分配它。char*str=char*malloc10分配堆中的内存。您有责任使用免费软件发布它。否则它被称为泄漏,一旦你用另一个地址重新分配str,即分配的内存丢失,直到程序结束。如果你没有在你的C书中找到它,扔掉它,买一个好的-错误:堆栈用于静态内存分配,而不是