我添加了一个新类,并使用new
创建了它的对象。
我看到程序因此崩溃了。在进一步调试时,我发现有一个现有的类,它是使用Buffer Pool中的placement new分配的。
那么我的new
运算符很可能不知道这个并从该缓冲区中分配内存?
如何确认此问题以及如何避免此问题无法从该池中分配?
代码片段: 在分配池之前调用我的代码。
使用池的地方
// Initialize buffer pool for path pbject buffers
UINT32 size = CHOP_MAX_PATH_NUM * sizeof(Buffer<pathElement>);
/* Create the path manager for each channelized sonet line */
for (UINT8 lineId = 0; lineId < maxLines; lineId++) {
/* Get the max STS Paths for this line */
chanSonetLineMgr[lineId] =
new ChopOC48SonetPathMgr(
bay, lineId, &pathElementPool,
NULL, dynamic_cast<SonetLineNg *>(linesNg[lineId]),
NULL, //Alert: When Chop Path Mgr is ready