已经建立(见下文)new创建对象需要放置
int* p = (int*)malloc(sizeof(int));
*p = 42; // illegal, there isn't an int
Run Code Online (Sandbox Code Playgroud)
然而,这是在C中创建对象的一种非常标准的方式.
问题是,int如果是在C中创建并返回到C++ ,是否存在?
换句话说,以下是否保证合法?假设intC和C++是相同的.
foo.h中
#ifdef __cplusplus
extern "C" {
#endif
int* foo(void);
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
foo.c的
#include "foo.h"
#include <stdlib.h>
int* foo(void) {
return malloc(sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include "foo.h"
#include<cstdlib>
int main() {
int* p = foo();
*p = 42;
std::free(p);
}
Run Code Online (Sandbox Code Playgroud)
有关安置强制性质的讨论的链接new: