相关疑难解决方法(0)

查找数据段的地址范围

作为一个编程练习,我在C中编写了一个标记 - 清除垃圾收集器.我希望扫描数据段(全局等)以获得指定内存的指针,但我不知道如何获取范围该段的地址.我怎么能这样做?

c garbage-collection memory-management global-variables memory-layout

19
推荐指数
2
解决办法
2万
查看次数

在C程序中,是否可以将所有全局变量重置为默认值?

我有一个我需要重用的传统C Linux应用程序.该应用程序使用了许多全局变量.我想重用这个应用程序的main方法并在循环中调用它.我发现当我在循环中调用main方法(重命名为callableMain)时,应用程序行为不一致,因为在上一次迭代中设置的全局变量的值会影响新迭代中的程序流.

我想要做的是在执行新迭代之前将所有全局变量重置为默认值.

例如,原始程序是这样的

OriginalMain.C

#include <stdio.h>

int global = 3; /* This is the global variable. */

void doSomething(){     
         global++; /* Reference to global variable in a function. */    
}    

     // i want to rename this main method to callableMain() and
     // invoke  it in a loop 
     int main(void){    
       if(global==3) {    
       printf(" All  Is Well \n");    

       doSomething() ;  
     }
     else{

       printf(" Noooo\n");  

       doNothing() ;

     }
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想改变这个程序如下:

我更改了上面的文件,将main()重命名为callableMain()

我的新主要方法如下:

int main(){  

     for(int i=0;i<20;i++){  

         callableMain();

         // this is …
Run Code Online (Sandbox Code Playgroud)

c global-variables

3
推荐指数
3
解决办法
6650
查看次数