let free_function () =
  try
    Kernel_function.get_vi (Globals.Functions.find_by_name "free")
  with Not_found ->
    let params = Some ["ptr",voidPtrType,[]] in
    let f =
      findOrCreateFunc
        (Ast.get ()) "free" (TFun(voidType,params,false,[]))
    in
    let behav = {
      b_name = name_of_default_behavior;
      b_assumes = [];
      b_ensures = [];
      b_assigns = [ Nothing,[] ];
    } in
    let spec = { (empty_funspec ()) with spec_behavior = [behav]; } in
    Globals.Functions.replace_by_declaration spec f locUnknown;
    f