another observation the following code
char *data = (char *)malloc(need_size); if(data == NULL) { printf("data == NULL\n"); return 1; } else { for(size_t i = 0; i < need_size; ++i) { #if 0 size_t c = i % 64; c += 63; data[i] = c; #else data[i] = 'A'; #endif } printf("data != NULL <<%c>>\n", data[0x10000]); } free(data); returns data != NULL <<A>> Program ended with exit code: 0 but if you replace #if 0 to #if 1 it started to behave correctly (data = NULL) dm > On Jul 4, 2016, at 4:20 PM, Carl Hoefs <newsli...@autonomy.caltech.edu> wrote: > > >> On Jul 4, 2016, at 12:58 PM, Clark Cox <clarkc...@gmail.com> wrote: >> >> Malloc effectively *never* returns NULL. > > It does seem that malloc returns NULL on error... > > #include <stdlib.h> > #include <stdio.h> > > int main(int argc, const char * argv[]) { > size_t need_size = 0x1000000000000; > > char *data = "dummy"; // data ptr is not NULL > data = malloc(need_size); // data ptr overwritten > > if(data == NULL) { > printf("ERROR data == %p\n",data); // <----- data is NULL > return 1; > } else { > printf("OKAY data != NULL: %p\n",data); > } > data[0] = 'c'; > > free(data); > > return 0; > } > > mtest(3008,0x7fff786d1300) malloc: *** mach_vm_map(size=281474976710656) > failed (error code=3) > *** error: can't allocate region > *** set a breakpoint in malloc_error_break to debug > ERROR data == 0x0 > > Dmitry Markman _______________________________________________ Do not post admin requests to the list. They will be ignored. Xcode-users mailing list (Xcode-users@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/xcode-users/archive%40mail-archive.com This email sent to arch...@mail-archive.com