Memcpy to mallocd location



我刚刚从C 开始,从更高级别的语言移动。对于我正在构建的东西,我正在分配空间,然后弄清楚您拥有的对象。这与以下相当,但下面不起作用 - 我希望能回到45岁,但我认为可以得到一个内存位置。我搞砸了?

void *ptr;
int a = 45;
ptr = malloc(sizeof(int));
memcpy(ptr, &a, sizeof(int));
int *b;
b = (int*)ptr;
std::cout << &b;

如注释中:将 std::cout << &b;更改为 std::cout << *b;

但是,如果您确实需要malloc,那么接下来可能会更容易:

int *ptr;
int a = 45;
ptr = static_cast<int*>(malloc(sizeof(int)));
*ptr = a;  // memcpy(ptr, &a, sizeof(int)); can be done, but is not necessary.
std::cout << *ptr;
free(ptr);

更多C ,但不建议:

int ptr* = new int(a);
std::cout << *ptr;
delete ptr;

当指针具有明确的范围时,更简单,因为您不必记得清理:

std::unique_ptr<int> ptr = std::make_unique(a);
std::cout << *ptr;

然而,原语的指针在C 中几乎没有用,因此最好完全避免它们,除非在某些库中需要时。

相关内容

  • 没有找到相关文章

最新更新