变态的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;
}

然后是调试的截图:

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

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

坑爹的微软!

 

操作系统:Windows7 x64

处理器: Intel 2950M

内存: 8GB DDR4

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值