我有以下代码,我收到以下错误
错误 C2036:“void *”:未知大小
错误 C2440:“static_cast”:无法从“void *”转换为“size_t”
在线
void *addr = static_cast <void*> (static_cast <size_t> (mem + bytesAlreadyAllocated));
我的问题是为什么我会遇到错误以及如何摆脱这些错误?
感谢帮助。
class MemoryChunk {
public:
MemoryChunk (MemoryChunk *nextChunk, size_t chunkSize);
~MemoryChunk() {delete mem; }
inline void *alloc (size_t size);
inline void free (void* someElement);
// Pointer to next memory chunk on the list.
MemoryChunk *nextMemChunk() {return next;}
// How much space do we have left on this memory chunk?
size_t spaceAvailable() { return chunkSize - bytesAlreadyAllocated; }
// this is the default size of a single memory chunk.
enum { DEFAULT_CHUNK_SIZE = 4096 };
private:
// The MemoryChunk class is a cleaner version of NextOnFreeList. It separates the next pointer from
// the actual memory used for the allocated object. It uses explicit next and mem pointers, with no
// need for casting.
MemoryChunk *next;
void *mem;
// The size of a single memory chunk.
size_t chunkSize;
// This many bytes already allocated on the current memory chunk.
size_t bytesAlreadyAllocated;
};
MemoryChunk::MemoryChunk(MemoryChunk *nextChunk, size_t reqSize) {
chunkSize = (reqSize > DEFAULT_CHUNK_SIZE) ? reqSize : DEFAULT_CHUNK_SIZE;
next = nextChunk;
bytesAlreadyAllocated = 0;
mem = new char [chunkSize];
}
void* MemoryChunk :: alloc (size_t requestSize) {
void *addr = static_cast <void*> (static_cast <size_t> (mem + bytesAlreadyAllocated));
bytesAlreadyAllocated += requestSize;
return addr;
}
inline void MemoryChunk :: free (void *doomed) {}