最近在做兼容性测试的时候发现一个特别有趣的问题,在Win10上可以完美运行的C++程序在Win7上一运行就挂掉了,代码一模一样!在经过了两天没日没夜的调试后发现,Win10系统与Win7系统的CPU多线程调度存在较大的差异。
在Win10中,如果在一个类中运行了一个函数对一个指针开辟对应的内存,而在类中开启线程对其进行调用,是完全没有问题的,即便是开辟内存的函数退出了也无所谓。而在Win7中则不然,这些开辟的内存指针在函数退出后会变成野指针导致内存访问报错。
因此在Win7环境下的C++类设计中,如果使用多线程技术,需要注意开辟空间和使用空间最好是在同一个线程中。当然,微软已经不再支持Win7了,因此也希望广大的甲方跟上时代,哈哈哈。