ich habe ein problem, dass ich nicht herausfinden kann, so hoffe ich, dass ihr mir helfen könnt. Ich schrieb ein Programm, um von dezimal in binär zu konvertieren und schreibe die Bits in ein Integer-Array, was gut funktioniert, bis ich ein paar printf-Anweisungen entferne. Da ich dachte, dass dies seltsam war und die printf-Anweisung entfernt die Logik nicht ändern des codes habe ich versucht das problem auf einer anderen maschine nachzubilden und dort funktioniert es wie man es mit und ohne printfs erwartet. Hier ist der Code:entfernen printf statment von code bricht programm
#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
printf("input a number:\n");
scanf("%d",&a);
int size=sizeof(a);
size=size*8;
printf("size in bits: %d\n",size);
int *p;
p=malloc(size);
int i;
for(i=0;i<size;i++){
p[size-i-1]=a&0x1;
a=a>>1;
}
for(i=0;i<size;i++){
printf("%d",p[i]);
}
printf("\n");
}
wenn ich entferne die
printf("input a number:\n");
und
printf("size in bits: %d\n",size);
Ich erhalte einen Fehler
a.out: malloc.c:2392: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.Aborted (core dumped)
Wenn es hier hilft, ist der Ausgang von uname -a auf meinem machi ne
Linux aaaa 4.4.0-45-generiC#66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
und die Ausgabe von der anderen Maschine
Linux bernard-Inspiron-5558 3.13.0-95-generiC#142-Ubuntu SMP Fri Aug 12 17:00:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
meine gcc Version
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2)
und der andere
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
dies etwas hat mit dem zu tun gcc, das OS, oder mache ich etwas g falsch im Code?