11 个解决方案
#1
应该是堆栈中,一般不能初始化。
#2
堆栈?堆还是栈呢?哈哈,有什么相关的书介绍一下
#3
局部变量都是栈空间吧?
#4
呵呵,编译器为什么会这样呢?明显这样的话对于程序是不好的
#5
局部变量被分配在栈里。
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里。
给局部变量自动初始化为0也不一定就安全。对于一个变量没有意义的值就是不安全的。0一定有意义么?c++从效率出发,其编译器的原则就是“非必要不使用”。对于可做可不做的,它都会选择不做。
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里。
给局部变量自动初始化为0也不一定就安全。对于一个变量没有意义的值就是不安全的。0一定有意义么?c++从效率出发,其编译器的原则就是“非必要不使用”。对于可做可不做的,它都会选择不做。
#6
楼上说得不错,“非必要不使用”,就应如此,这就是C/C++的原则
#7
我们通常说的“堆”其实是“数据段(data segment)”的一部分,动态分配内存(如new 和 malloc)本质上都是在“数据段”中寻找足够大小的内存块,然后分配给应用程序;
全局变量是在“数据段”中除了“堆”之外的空间里面,它们会被自动初始化(其实在C语言中还分为“已初始化”和“未初始化”两种,但是在c++中都是“已初始化”的了)。而局部变量是分配到“栈(stack)”中,它们是不会被自动初始化的。
全局变量是在“数据段”中除了“堆”之外的空间里面,它们会被自动初始化(其实在C语言中还分为“已初始化”和“未初始化”两种,但是在c++中都是“已初始化”的了)。而局部变量是分配到“栈(stack)”中,它们是不会被自动初始化的。
#8
局部变量被分配在栈里
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里
我们通常说的“堆”其实是“数据段(data segment)”的一部分,动态分配内存(如new 和 malloc)本质上都是在“数据段”中寻找足够大小的内存块,然后分配给应用程序
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里
我们通常说的“堆”其实是“数据段(data segment)”的一部分,动态分配内存(如new 和 malloc)本质上都是在“数据段”中寻找足够大小的内存块,然后分配给应用程序
#9
初始化局部变量是可以,但是很让费时间。
#10
对局部变量的初始化是程序员的责任
c++编译器只做自己该做的事情~
c++编译器只做自己该做的事情~
#11
不初始化是为了效率,但也随之产生一些问题。
调用未初始化的数据会出错,即使是int型数据。
天杀的微软,其他的编译器就不会抱错。
调用未初始化的数据会出错,即使是int型数据。
天杀的微软,其他的编译器就不会抱错。
#1
应该是堆栈中,一般不能初始化。
#2
堆栈?堆还是栈呢?哈哈,有什么相关的书介绍一下
#3
局部变量都是栈空间吧?
#4
呵呵,编译器为什么会这样呢?明显这样的话对于程序是不好的
#5
局部变量被分配在栈里。
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里。
给局部变量自动初始化为0也不一定就安全。对于一个变量没有意义的值就是不安全的。0一定有意义么?c++从效率出发,其编译器的原则就是“非必要不使用”。对于可做可不做的,它都会选择不做。
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里。
给局部变量自动初始化为0也不一定就安全。对于一个变量没有意义的值就是不安全的。0一定有意义么?c++从效率出发,其编译器的原则就是“非必要不使用”。对于可做可不做的,它都会选择不做。
#6
楼上说得不错,“非必要不使用”,就应如此,这就是C/C++的原则
#7
我们通常说的“堆”其实是“数据段(data segment)”的一部分,动态分配内存(如new 和 malloc)本质上都是在“数据段”中寻找足够大小的内存块,然后分配给应用程序;
全局变量是在“数据段”中除了“堆”之外的空间里面,它们会被自动初始化(其实在C语言中还分为“已初始化”和“未初始化”两种,但是在c++中都是“已初始化”的了)。而局部变量是分配到“栈(stack)”中,它们是不会被自动初始化的。
全局变量是在“数据段”中除了“堆”之外的空间里面,它们会被自动初始化(其实在C语言中还分为“已初始化”和“未初始化”两种,但是在c++中都是“已初始化”的了)。而局部变量是分配到“栈(stack)”中,它们是不会被自动初始化的。
#8
局部变量被分配在栈里
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里
我们通常说的“堆”其实是“数据段(data segment)”的一部分,动态分配内存(如new 和 malloc)本质上都是在“数据段”中寻找足够大小的内存块,然后分配给应用程序
全局变量和静态变量都存在静态存储区。
new出来的空间在堆里
我们通常说的“堆”其实是“数据段(data segment)”的一部分,动态分配内存(如new 和 malloc)本质上都是在“数据段”中寻找足够大小的内存块,然后分配给应用程序
#9
初始化局部变量是可以,但是很让费时间。
#10
对局部变量的初始化是程序员的责任
c++编译器只做自己该做的事情~
c++编译器只做自己该做的事情~
#11
不初始化是为了效率,但也随之产生一些问题。
调用未初始化的数据会出错,即使是int型数据。
天杀的微软,其他的编译器就不会抱错。
调用未初始化的数据会出错,即使是int型数据。
天杀的微软,其他的编译器就不会抱错。