! thank you, Blei. I'm not sure why it wasn't working before ! when I tried it while talking to you, but now it works fine. ! here is what I'm using now. I had tried this same thing ! when you showed me your code (adapting \ void to void ! and pointer: void to void*) but I was still crashing my ! instance of Factor. must've been code gremlins. ! Either way, thanks, and here goes what I have now. CALLBACK: void* pcre_malloc_t ( size_t size ) ; C-GLOBAL: pcre_malloc_t pcre_malloc : pcre-malloc ( size -- ptr ) pcre_malloc void* { size_t } cdecl alien-indirect ; CALLBACK: void pcre_free_t ( void* ptr ) ; C-GLOBAL: pcre_free_t pcre_free : pcre-free ( ptr -- ) pcre_free void { void* } cdecl alien-indirect ; DESTRUCTOR: pcre-free ! now this works: [ "some pattern" new-regex &pcre-free ] with-destructors ! returns a now-invalid (just-freed) pointer, which is correct.