Memory management kmalloc是否调用类型构造函数?
众所周知,使用new的内存分配调用各自的类型构造函数,而使用malloc的内存分配则不调用。但是卡马尔科呢 我正在尝试开发一些系统调用,我需要为下面的结构分配内存Memory management kmalloc是否调用类型构造函数?,memory-management,linux-kernel,kmalloc,Memory Management,Linux Kernel,Kmalloc,众所周知,使用new的内存分配调用各自的类型构造函数,而使用malloc的内存分配则不调用。但是卡马尔科呢 我正在尝试开发一些系统调用,我需要为下面的结构分配内存 struct mailbox{ unsigned long existing_messages; unsigned long mxid; struct message *msg; struct message *last_node; mailbox(){ existing_mes
struct mailbox{
unsigned long existing_messages;
unsigned long mxid;
struct message *msg;
struct message *last_node;
mailbox(){
existing_messages = 0;
mxid = 0;
msg = NULL;
last_node = NULL;
}
};
如果我使用kmalloc分配内存,它会在分配时调用struct mailbox的构造函数吗?如果不是,除了显式调用构造函数之外,还有什么合理的方法可以调用构造函数。对于内核中的内存分配,是否有与new等效的函数?kmalloc不调用构造函数 P> > C++中的一种方法是调用“放置新”。 例如: void*ptr=malloc(sizeof(T)) T*p=new(ptr)T()//在内存中构造对象 注: 您需要显式调用析构函数以避免对象本身的内存泄漏, 然后为该内存调用相应的取消分配例程 p->~T()//调用析构函数 免费(ptr)//空闲内存
等等,你在Linux内核中使用C++吗?C语言中没有构造函数。你的代码甚至不应该编译!在内核主make文件中,我看到一行HoSTCXXX=G++HoxCXFLAGS=-O2,这意味着当内核编译它能够编译C++代码时,我是对的吗?如果我错了,请纠正我。我非常怀疑你会有多大的成功。。。当然,你也许能把它编译出来,但我怀疑你能从中得到什么有用的东西。内核不支持C++运行时AFAIK。