New method for know free memory in IOS. {answer myself}

Hi,

I was looking to make a OF method to know how many memory is free in IOS system to avoid memory warnings. Here’s some code to do that, but I am wondering how to cast a type natural_t to c++ one. Anyone have some idea how to do this conversion?

  
  
#import <mach/mach.h>  
#import <mach/mach_host.h>  
+(natural_t) get_free_memory {  
mach_port_t host_port;  
mach_msg_type_number_t host_size;  
vm_size_t pagesize;  
host_port = mach_host_self();  
host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);  
host_page_size(host_port, &pagesize);  
vm_statistics_data_t vm_stat;  
if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS) {  
NSLog(@"Failed to fetch vm statistics");  
return 0;  
}  
  
/* Stats in bytes */  
natural_t mem_free = vm_stat.free_count * pagesize;  
return mem_free;  
}  
  

I found question myself answer. A natural_t variable is casting to an int type by: “int variableInt= round(variable_natural_t/100000);”

Full code that could convert in OF methods for IOS used, free and total memory:

  
  
  
#import <mach/mach.h>  
#import <mach/mach_host.h>  
   
   
-(void) print_free_memory {  
mach_port_t host_port;  
mach_msg_type_number_t host_size;  
vm_size_t pagesize;  
   
host_port = mach_host_self();  
host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);  
host_page_size(host_port, &pagesize);  
   
vm_statistics_data_t vm_stat;  
   
if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS)  
NSLog(@"Failed to fetch vm statistics");  
   
/* Stats in bytes */  
natural_t mem_used = (vm_stat.active_count +  
vm_stat.inactive_count +  
vm_stat.wire_count) * pagesize;  
natural_t mem_free = vm_stat.free_count * pagesize;  
natural_t mem_total = mem_used + mem_free;  
int iUsed = round(mem_used/100000);  
int iFree = round(mem_free/100000);  
int iTotal = round(mem_total/100000);  
NSLog(@"used: %d free: %d total: %d", iUsed, iFree, iTotal);  
}