今天一同事让我帮看一个程序, 最后定位到的问题是内存越界:
int main()
{
	int a = 0;
	*(double*)&a = 0; // 访问了非法内存, 运行时出错
	return 0;
}#include <iostream>
using namespace std;
int main()
{
	int a = -1;
	int b = -1;
	*(double*)&b = 0; // 访问了a的内存, 其实也危险, 运行时侥幸没有出错
	cout << a << endl; // 0
	return 0;
}总之, 像这样大小不一的转化, 要杜绝。