作为一个编程练习,我在C中编写了一个标记 - 清除垃圾收集器.我希望扫描数据段(全局等)以获得指定内存的指针,但我不知道如何获取范围该段的地址.我怎么能这样做?
c garbage-collection memory-management global-variables memory-layout
我有一个我需要重用的传统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)