高并发内存池测试问题集合1:内存申请的冲突与误用

void* b = ConcurrentAlloc((size_t)257 * 1024);
void *a=ConcurrentAlloc(1);

ConcurrentFree(b);
ConcurrentFree(a);

只创建了一个线程,由于第一次已经超限,所以第二次无法分配

void *a=ConcurrentAlloc(1);
void* b = ConcurrentAlloc((size_t)257 * 1024);
ConcurrentFree(a);
ConcurrentFree(b);

可以看到线程只有一个,由于创建的线程首先分配了1的内存 ,大内存虽然申请了下来,却无法释放

void* b = ConcurrentAlloc((size_t)257 * 1024);

ConcurrentFree(b);

但是大内存其实根本没有申请出来

static void ConcurrentFree(void* ptr)
{
	
	span* span1 = Pagecache::GetInstance()->MapObjectToSpan(ptr);
	size_t size = span1->objsize;
	cout << size << endl;
	if (size > Max
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值