Ik vroeg mij af wat de c++ standaard zegt over de volgende code:
Is een negatieve size zogezegd undefined behaviour, of zou dat een exception moeten throwen? Op een SGI Irix bijvoorbeeld, geeft ie geen exception en krijg ik een valid pointer terug.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| int main() {
int size=-1;
try {
int * data = new int[size];
if (data==NULL)
printf("Failed to allocate data: No exception\n");
else
printf("Allocated Data Succesfull\n");
}
catch(std::bad_alloc & e) {
printf("Failed to allocate data: std::bad_alloc\n");
}
catch(...) {
printf("Failed to allocate data: other exception\n");
}
return 0;
} |
Is een negatieve size zogezegd undefined behaviour, of zou dat een exception moeten throwen? Op een SGI Irix bijvoorbeeld, geeft ie geen exception en krijg ik een valid pointer terug.