我在搞内存分配。我想测试一下,像Java一样,这个程序是否会产生异常。
int main() {
int* a = nullptr;
int b = *a;
std::cout << b;
}
确实如此。然后我使用 malloc
作为指向 a
但没有初始化a。
int main() {
int* a = (int*) malloc(sizeof(int));
int b = *a;
std::cout << b;
}
然而,它没有抛出一个异常,而是打印出一个看似随机的数字-842150451。我甚至尝试用long代替int。
int main() {
long* a = (long*) malloc(sizeof(long));
long b = *a;
std::cout << b;
}
但结果还是一样 然后我又尝试用short代替。
int main() {
short* a = (short*) malloc(sizeof(short));
short b = *a;
std::cout << b;
}
结果不是之前的结果,而是-12851。我想到的每个基元类型都是这样。我想知道的是,这些数字是怎么来的,为什么是这些数字?