今天遇到了这样的一个坑:
- release模式下,将一个构造函数构造出来的东西的指针直接传递到别的地方,其中的内容会出错
向大佬请教后意识到:
- 因为构造函数构造的内容在之后并没有再次被用到,可能被编译器优化掉了(因为在debug模式下没有问题),所以传递的指针里面根本就没有构造
解决:
- 使用new语句,或者直接在外面定义,再把指针传递进去
代码:
1 | // Since that Rect<DATATYPE, NUMDIMS>(1, &p) is just a local variable, in release version, may not create it!!!!!!! So &(Rect<DATATYPE, NUMDIMS>(1, &p)) returns an invalid pointer!!!!!!!!!! |