Why does this code behave like this?
```cpp
#include <cstdlib>
#include <cstdio>
int main()
{
int *a = (int *)malloc(sizeof(int));
*a = 42;
for (int i = 1; i < 10; i++) {
a[i] = i;
}
for (int i = 0; i < 10; i++) {
printf("%d\n", a[i]);
}
}
Ouput :
malloc(): corrupted top size
Aborted (core dumped)
```
this is understandable that we are getting error over here but when we add a printf() after *a = 42. we do not get this error why is that
```cpp
#include <cstdlib>
#include <cstdio>
int main()
{
int *a = (int *)malloc(sizeof(int));
*a = 42;
printf("%d\n", a[0]);
for (int i = 1; i < 10; i++) {
a[i] = i;
}
for (int i = 0; i < 10; i++) {
printf("%d\n", a[i]);
}
}
Ouput :
42
42
1
2
3
4
5
6
7
657975
668983
```
can anyone explain reasoning behind this behaviour
https://redd.it/1oi40qg
@r_cpp
Post #24127
14