使用指定的字节数从进程的非托管内存中分配内存

时间:2011-02-12 23:44:42

标签: c# c++

C ++中是否有函数或某些东西允许我使用指定的字节数从进程的非托管内存中分配内存。

就像在exmapl的c#中一样:

_key = Marshal.AllocHGlobal(key.P.Length * sizeof(UInt32) + key.S.Length * sizeof(UInt32));

2 个答案:

答案 0 :(得分:2)

在C ++中(没有CLI),所有内存都是不受管理的。

 void * MyMem  = new byte[MySize];

答案 1 :(得分:0)

仅使用new运算符应该使C ++库从进程的非托管内存中分配内存。如果你真的真的只想使用多个字节,你需要使用malloc然后再转换指针,但是如果你想做什么,你应该考虑使用普通的C.否则,如果你需要使用C ++,我会推荐new运算符并让它找出正确的字节数:

//Allocate the memory
uint32_t *_key = new uint32_t[key.P.Length + key.S.Length];

//Do what you need with it

//Cleanup and deallocate the memory
delete[] _key;

或者在C:

//Allocate
uint32_t *_key = malloc(key.P.Length * sizeof(UInt32) + key.S.Length * sizeof(UInt32));

//Use

//Cleanup
free(_key);