ich den folgenden CodeStrlen von char * malloc
char *new_str;
int size_in_bytes;
int length;
size_in_bytes = 2*sizeof(char);
new_str = (char *)malloc(size_in_bytes);
length = strlen(new_str);
Erwartung der Länge sein 2, es tatsächlich ist 16. Kann jemand erklären, warum? Haben
Dieser Code liest über den zugewiesenen Speicher hinaus und kann zu undefiniertem Verhalten führen –
Verwenden Sie 'calloc()', dann erhalten Sie die richtige Antwort (die 0 sein sollte). Es gibt keine (tragbare) Möglichkeit, die Größe eines zugewiesenen Blocks zu bestimmen (es sei denn, es gibt etwas Neues im neuesten Standard). – TMN