When this code was executed, the library dmalloc somehow determined that there was an out of bounds memory access. As it allocated 1023 elements and attempted to access 1024th element. (Array index is 0-based).
#include "dmalloc.h"
int main(){
char *ch = malloc(1023);
ch[1023] = 0x00;
return 0;
}
How can it know?
When using the dmalloc library, it actually allocates more than you request. It keeps one area before and one after the memory it returns to you. These areas are filled with special values that are then checked when you free the memory. If those values are not correct, then you clearly have modified memory out of bounds.