我在header文件中有一个全局变量as.h as:
extern int m_error;
我在mem.c文件中将其声明为:
#include "mem.h"
int m_error;
void *init_mem(int size){
void *ptr = mmap(/*arguments*/); //returns address and stores it in ptr
//here I want m_error to store address stored in ptr
}
void free_mem(){
printf("free memory: "); //I want it to print address returned by mmap() in init_mem function through m_error variable.
}
我只能使用一个是m_error的全局变量。因此,我的方法将m_error键入可以让其存储在ptr中的地址的东西
int m_error 可以使用:
使用:m_error = (int)ptr;
但是,正如其他评论所建议的那样,您作为设计师需要了解这意味着什么,以及为什么有时可能起作用,并且可能无法使用其他时间。这完全取决于您的平台在哪个地址范围内。
如果您不确定> mmap()的地址范围是什么,那么您需要在程序中提供保护措施才能采取适当的操作如果地址不在 int 的范围内。
如果我有另一个选项,我会将指针的值传递给 free_mem()函数以打印地址的值。