变态的C/C++混合编程中的超自然现象

一句话说清楚的是 new 和 calloc 分配的内存重叠,然后直接上代码:


// entry
int main(int argc, char **argv)
{
	class dummy {
	public:
		char *data;
	};
	class dummy2 {
	public:
		int k;
	};

	dummy *d = new dummy;
	d->data = (char *)calloc(4096, 24);
	dummy2 *d2 = new dummy2;
	d2->k = 1;

	// free delete ...

	return 0;
}

然后是调试的截图:

变态的C/C++混合编程中的超自然现象_第1张图片

很明显,第一个类对象的指针分配总共 4096*24=98304(0x18000)字节

而第二个类的指针分配到的地址就在这块内存块当中,坑我一个晚上把神经网络的矩阵运算代码几千行都检查了几遍

坑爹的微软!

 

操作系统:Windows7 x64

处理器: Intel 2950M

内存: 8GB DDR4

显卡: NVIDIA GeForce 940M (DircectX 11,CUDA 8.0)

 

你可能感兴趣的:(Visual,C++)