Subject: [ruby-ffi] Why the address change? |
From: Simon Chiang |
Date: 12/10/09 12:16 AM |
To: ruby-ffi |
I've noticed the address of pointers can change when passed back into an attached function multiple times. How can I get the address to stay the same? For example, say I have these functions: #include <stdio.h> void *get_pointer() { void *ptr; return(ptr); } int print_pointer( void *ptr ) { printf("pointer: %p\naddress: %p\n", ptr, &ptr); return(0); } And then I do this: module ExampleCode attach_function :get_pointer, [], :pointer attach_function :print_pointer, [:pointer], :int end ptr = ExampleCode.get_pointer() puts puts "First Time:" ExampleCode.print_pointer(ptr) puts puts "Second Time:" ExampleCode.print_pointer(ptr) I get this for an output: First Time: pointer: 0x6249 address: 0x7fff5fbfef38 Second Time: pointer: 0x6249 address: 0x7fff5fbfeef8 I'm on OS X 10.6.2, using FFI 0.5.4. Thanks!