静态内存分配与动态内存分配的区别

静态内存分配与动态内存分配的区别

我想知道静态内存分配和动态内存分配有什么区别?

你能用任何例子来解释这件事吗?


繁星点点滴滴
浏览 1322回答 3
3回答

www说

有三种类型的分配-静态的,自动的,和动态的。静态分配意味着在程序启动时为您的变量分配内存。创建程序时,大小是固定的。它适用于全局变量、文件范围变量和static定义内部函数。自动内存分配为函数中定义的(非静态)变量发生,通常存储在堆叠(尽管C标准没有强制要求使用堆栈)。您不必使用它们来保留额外的内存,但另一方面,对此内存的生命周期也有限的控制。在函数完成之前,函数中的自动变量才会出现。void func() {     int i; /* `i` only exists during `func` */}动态内存分配有点不同。现在控制这些内存位置的确切大小和生存期。如果不释放它,就会遇到内存泄漏,这可能导致应用程序崩溃,因为在某个时候,系统无法分配更多的内存。int* func() {     int* mem = malloc(1024);     return mem;}int* mem = func(); /* still accessible */在上面的例子中,即使函数终止,分配的内存仍然是有效的和可访问的。当您完成内存,您必须释放它:free(mem);

人到中年有点甜

静态内存分配:变量分配永久分配完成以前程序执行它使用称为堆叠用于实现静态分配效率低的确有没有内存可重用性动态内存分配:变量分配只如果程序单元处于活动状态分配完成期间程序执行它使用称为堆用于实现动态分配更有效率的确有内存可重用性..不需要时可以释放内存。
打开App,查看更多内容
随时随地看视频慕课网APP