C语言菜鸟求助:关于C语言中变量释放的问题

作者&投稿:包琴 (若有异议请与网页底部的电邮联系)
c语言关于变量储存和释放的问题?~

第一个理解没问题,第二个你把a的地址赋给了b,也就是有两个指针都指向这个地址,释放是地址,这个地址能被其他变量使用,下面的程序没有变量使用这个地址,所以里面的内容没有消失,所以通过b还是能取出b所指向地址里的内容

1.正确全局变量有默认值
2.file = NULL;
g_servicename = 0;
debugtime = 0;
这不是全局变量的释放吧 只不过将之赋值了一下
仍然存在
全局变量的生存期是 伴随着整个程序的执行的

变量释放就是告诉系统你不用这块地址了,别的程序可以对那块地址进行赋值等操作,因此那块地址的值你就不可控了,即使你再对它赋值,也可能被别的程序改变,产生意想不到的结果。

就是收回,但是不抹除内存内储存的值,只是告诉操作系统这个地方的内存又能用了。所以你引用指针还能看到他。

你的 fa(int * j) 函数在使用变量 j 的时候,它的值已经被释放了.即使前面你声明的时候不用auto,打印出来的值还是有问题.这个是我些的.你看看.

#include <stdio.h>
void autoFree( int* i );
int main()
{
auto int i = 100;
printf( "%08X,%d\n", &i, i );
autoFree( &i );
return 0;
}
void autoFree( int* i )
{
printf( "%08X, %d", i, *i );
}
你可以反汇编跟踪一下,其实自动变量也是在栈里面的.忽悠人的.

释放就是资源的回收,但是你回收了以后这个指针就是又回来了指向随机地址了,

就是占用地址空间的释放


C语言菜鸟求助,关于C语言链表的一个问题,显示有四个错误,一个警告,哪 ...
二、函数声明与函数定义不符void main(){ SqStack S; InitStack(S); system("pause");}void InitStack(SqStack &S){ \/\/构造一个空栈 S.base=(int *)malloc(MAXSIZE*sizeof(int)); if(!S.base) exit(0); \/\/存储空间失败 S.top=S.base; S.stacksize=MAXSIZE;...

C语言菜鸟求助:执行语句for(i=0;i++
求助!c语言 执行语句“for(i=1;i++<5;);"后变数i的值是? c语言 执行语句“for(i=1;i++<5;);"后变数i的值是 6 因为当i==4时,(随后i变为5)判断为真,执行回圈 当i==5时,(随后i变为6)判断为假,退出回圈 int i; for(i=0;i++<10;i++)i++; printf("%d",...

C语言菜鸟求助:关于C语言中变量释放的问题
变量释放就是告诉系统你不用这块地址了,别的程序可以对那块地址进行赋值等操作,因此那块地址的值你就不可控了,即使你再对它赋值,也可能被别的程序改变,产生意想不到的结果。

C语言菜鸟求助!printf()函数输出的问题!
scanf("%lf",&x);意思按照%lf(double)的格式来读取一个数据,存到x的地址(&是取址符)对应的空间中,这样你输入的值实际上就是x的值。printf("sine of %lf is %lf\\n",x,s);意思按照%lf(double)的格式来打印x和s的值,其中前一个%lf 对应x,其中前一个%lf 对应s,这是一一对应的...

急!C语言菜鸟求助关于一个简单的求整除个数的编程.
include<stdio.h> void main(){ int i,j=0,sum;for(i = 8000; i<=260000;i++){ if(0 == i%678){ sum += i;j++ ;} } printf("能被678整除的有%d个,加起来是:%d\\n",j,sum);}

C语言 菜鸟求助
for(i=0;(c=string[i])!='\\0';i++) 当string中存入的字符不等于结束符时执行for语句体内的内容也就是if(c==' ') num++; 语句 if(c==' ') num++; 当字符c为空格是,则num++;这段程序是用来统计你输入的字符串中单词的个数的,比如你输入“How old are you?”然后按回车,...

---C语言菜鸟求助---
说说我的看法,函数名用one two other 来命名,是很要不得的,你应该给函数起一个有意义的名字,C语言当我把等级考试考过了就已经没有管了,我本来是学C#和asp.net的。最近对C++感兴趣。我记得C++中,如果函数没有形参的话,是可以不用void的(说的是没有参数的函数),不过C里面好像也可以不用...

菜鸟求助关于WebService的问题
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方...

C语言菜鸟求助
B 全局变量在静态区 局部变量在动态区 static变量在静态区

菜鸟求助:一个关于单片机跳转指令的简单问题
1、问题的关键是你要知道DJNZ的作用是什么,DJNZ是减1不为0跳转指令,也就是说执行完DJNZ后寄存器里面的数不为0的话是不会向下执行 2、因为这里是要加8次,当执行DJNZ R3后,若R3里的数不为0的话说明还没加8次,那么就需要继续累加,所以这里要跳到累加的前面去 3、你这里用到INC RO 指令,...

郾城县18342639306: 关于C语言中的变量定义 -
犹顷唯健: #include#include void main() { char *stmp,*s; int i=0,j=0; printf("请输入字符串:"); stmp=(char *)malloc(sizeof(char)*100); s=(char *)malloc(sizeof(char)*100); scanf("%s",stmp); while(stmp[j]!='\0') { if(stmp[j]=='*') j++; else s[i++]=stmp[j++]; } s[i]='\0'; printf("%s\n",s); }

郾城县18342639306: c语言关于变量储存和释放的问题? -
犹顷唯健: 第一个理解没问题,第二个你把a的地址赋给了b,也就是有两个指针都指向这个地址,释放是地址,这个地址能被其他变量使用,下面的程序没有变量使用这个地址,所以里面的内容没有消失,所以通过b还是能取出b所指向地址里的内容

郾城县18342639306: 用通俗语言解释C语言中的变量一词 -
犹顷唯健: 说得简单一些,就是你的名字现在代表你自己,但有可能下一个时刻就又有一个人叫你那名字,也就是说所谓变量就是能够代表一个值的量 它的值是可以随时改变的 说到这里明白了吧 再不懂的话就去看看那C语言程序设计(谭浩强编辑)

郾城县18342639306: 在C语言程序中如何使用变量? -
犹顷唯健: 要先定义,然后使用 例如:int i=5; //这就是定义(声明)printf("%d\n",i); //变量的使用

郾城县18342639306: 在c语言里变量的定义和声明?急急急! -
犹顷唯健: int a;和int a=1; 这两个既可以叫声明,也可以叫定义,“int a=1;”相当于“ int a;a=1;”两条语句,“int a;”是简单地定义一个变量,编译器会为其在内存中分配一个内存单元,该内存单元中的值在上电后可能不确定,也可能编译器将未初始化的变量统一初始化为0;如果这样定义:“int a=1;”那么编译器在为a变量分配内存的同时,还会负责将其初始化为1.不知道这样说是否明白了? LS不用纠结于是定义还是声明,关键是明白这两个语句代表了做什么就可以了.

郾城县18342639306: C语言中的变量是什么意思
犹顷唯健: 简单的理解: 变量就像一个盒子,是用来存东西的.盒子是用来存物品的,而变量则是用来存数据的.数据是随时都会变的,所以,变量的值也可以变.再深入一点: 变量实际上是内存上的一块区域.你把数据存变量里,实际上就是存到了内存里.举个例子(80x86架构)—— int var; var = 1; 执行第一条语句时,编译器就会将内存的4个单元(Win32是4个)“拿出来”,专门用来存储变量var的值.执行第二条语句后,这四个单元的值分别是0x01,0x00,0x00,0x00,合在一起表示1

郾城县18342639306: 什么是变量声明 什么是变量定义在C语言中 -
犹顷唯健: 变量声明:就是告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度,然后为变量分配存储空间.变量定义:定义合法类型、长度的值给变量,即赋值

郾城县18342639306: 关于C语言变量 -
犹顷唯健: #include int main() { int a,b,c; //定义三个整形变量用来存储那从键盘输出的三个数 printf("请输入3个数:"); //提示语 scanf("%d %d %d",&a,&b,&c); //从键盘输出三个数到a,b,c中 }

郾城县18342639306: c语言中的变量说明 -
犹顷唯健: 类型 变量名1[赋初值],[变量2[赋初值],变量3[赋初值],...变量n[赋初值]]; 类型有:int 整形、long 长整型、char 字符型、float 单精度实数型、double 双精度实数型、还有很多无符号型,就是没有负号的. 变量名:只能用英文字母和下划...

郾城县18342639306: c语言中变量的定义 -
犹顷唯健: 1、可以因为a是全局变量. 2、b的值为2,因为你读取完后,又对b进行了b=2的赋值操作,b的值已经发生改变. 如果还有什么疑问可以给我留言或直接Hi我.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网