C++ 不使用静态变量的原因?
我认为使用静态变量可能会导致代码可读性方面的歧义,但并没有什么特别之处。但现在,我知道有5种数据类型:文本、数据、bss、堆、堆栈。文本段用于代码、数据段。用于声明的变量,bss seg。用于未声明的变量,堆用于指针,堆栈用于函数的变量 最好不要使用静态变量而不是局部变量来最小化程序在计算机上运行时的大小 我很确定静态变量和全局变量都保存在bss或数据段中。编译后bss和数据段的大小不变。对于堆和堆栈,一旦使用它们就会被释放,所以不必担心大小 我这样想对吗 文本段用于代码、数据段。用于声明的变量,bss seg。用于未声明的变量 到目前为止你是对的 堆是指针的C++ 不使用静态变量的原因?,c++,c,C++,C,我认为使用静态变量可能会导致代码可读性方面的歧义,但并没有什么特别之处。但现在,我知道有5种数据类型:文本、数据、bss、堆、堆栈。文本段用于代码、数据段。用于声明的变量,bss seg。用于未声明的变量,堆用于指针,堆栈用于函数的变量 最好不要使用静态变量而不是局部变量来最小化程序在计算机上运行时的大小 我很确定静态变量和全局变量都保存在bss或数据段中。编译后bss和数据段的大小不变。对于堆和堆栈,一旦使用它们就会被释放,所以不必担心大小 我这样想对吗 文本段用于代码、数据段。用于声明的变量
No.Head用于通过<代码> MALROCK()/<代码>分配的数据,并且在C++的情况下,<代码>新< /代码> ./P> 指针存储在您放置它们的任何位置(数据、bss、堆栈)
和函数变量的堆栈 函数参数 最好不要使用静态变量而不是局部变量来最小化程序在计算机上运行时的大小 变量存在时大小完全相同(数据/bss与堆栈上);如果不存在,则基于堆栈的方法获胜 基于堆栈的方法在其他方面也取得了胜利:可重入性(如前所述)和可读性 对于堆和堆栈,一旦使用它们就会被释放,所以不必担心大小 当然你也得担心这里的尺寸。只要尝试分配100万块大小为16的MiB(至少在32位机器上),您就会看到 需要时应使用静态变量,不需要时应使用其他变量
文本段用于代码、数据段。用于声明的变量,bss seg。用于未声明的变量
到目前为止你是对的
堆是指针的
No.Head用于通过<代码> MALROCK()/<代码>分配的数据,并且在C++的情况下,<代码>新< /代码> ./P>
指针存储在您放置它们的任何位置(数据、bss、堆栈)
和函数变量的堆栈
函数参数
最好不要使用静态变量而不是局部变量来最小化程序在计算机上运行时的大小
变量存在时大小完全相同(数据/bss与堆栈上);如果不存在,则基于堆栈的方法获胜
基于堆栈的方法在其他方面也取得了胜利:可重入性(如前所述)和可读性
对于堆和堆栈,一旦使用它们就会被释放,所以不必担心大小
当然你也得担心这里的尺寸。只要尝试分配100万块大小为16的MiB(至少在32位机器上),您就会看到
需要时应使用静态变量,不需要时应使用其他变量
文本段用于代码、数据段。用于声明的变量,bss seg。用于未声明的变量
到目前为止你是对的
堆是指针的
No.Head用于通过<代码> MALROCK()/<代码>分配的数据,并且在C++的情况下,<代码>新< /代码> ./P>
指针存储在您放置它们的任何位置(数据、bss、堆栈)
和函数变量的堆栈
函数参数
最好不要使用静态变量而不是局部变量来最小化程序在计算机上运行时的大小
变量存在时大小完全相同(数据/bss与堆栈上);如果不存在,则基于堆栈的方法获胜
基于堆栈的方法在其他方面也取得了胜利:可重入性(如前所述)和可读性
对于堆和堆栈,一旦使用它们就会被释放,所以不必担心大小
当然你也得担心这里的尺寸。只要尝试分配100万块大小为16的MiB(至少在32位机器上),您就会看到
需要时应使用静态变量,不需要时应使用其他变量
文本段用于代码、数据段。用于声明的变量,bss seg。用于未声明的变量
到目前为止你是对的
堆是指针的
No.Head用于通过<代码> MALROCK()/<代码>分配的数据,并且在C++的情况下,<代码>新< /代码> ./P>
指针存储在您放置它们的任何位置(数据、bss、堆栈)
和函数变量的堆栈
函数参数
最好不要使用静态变量而不是局部变量来最小化程序在计算机上运行时的大小
变量存在时大小完全相同(数据/bss与堆栈上);如果不存在,则基于堆栈的方法获胜
基于堆栈的方法在其他方面也取得了胜利:可重入性(如前所述)和可读性
对于堆和堆栈,一旦使用它们就会被释放,所以不必担心大小
当然你也得担心这里的尺寸。只要尝试分配100万块大小为16的MiB(至少在32位机器上),您就会看到
当您需要变量时,应使用静态
变量,如果不需要,则应使用其他变量。当您声明变量静态
时,意味着必须使用0
对其进行初始化
是编译器用0
对其进行初始化的额外工作。所以如果你说
100
变量,那么编译器的工作将是声明变量的100倍