【问题标题】:C++ simple malloc and sizeof [duplicate]C ++简单的malloc和sizeof [重复]
【发布时间】:2017-05-13 09:46:29
【问题描述】:

这两条简单的线我得到了一个奇怪的结果

char* reverse = (char*) malloc(sizeof(char)*19);
cout << sizeof(reverse)/sizeof(char) << endl;

无论我在第一行输入什么数字(在本例中为 19)。我总是得到 4 作为输出。怎么了 ?谢谢。

【问题讨论】:

  • 怎么了?你在计算指针的大小。
  • char*char[19] 是不同的类型。 sizeof(char*) 在你的系统中是四个字节
  • sizeof(reverse) 并没有按照你的想法做:
  • 那么如何计算整个块的大小?
  • 不要。如果需要动态字符数组,请使用 std::string。那有一个size 函数。

标签: c++ malloc sizeof


【解决方案1】:

32位机器上指针大小为32位(4字节),而在64位机器上为8字节。无论它们指向什么数据类型,它们都有固定的大小。

sizeof(char) = 1 byte

因此,您每次都得到 4,因为您的系统是 32 位机器

【讨论】:

  • 如果你解释了如何做 OP 试图做的事情,你的答案会更好。
  • 我认为没有办法重新计算大小
  • 我同意你们两个。我回答了为什么 OP 每次都得到 4,我想没有直接的方法可以从指针中获取实际大小(虽然不是 100% 肯定)。如果有人知道,您可以告诉我该怎么做,或者您可以编辑我的答案。谢谢:)
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 2013-02-19
  • 2011-04-14
  • 2011-09-22
  • 2014-08-13
  • 1970-01-01
  • 2011-01-16
相关资源
最近更新 更多