首页 > 试题广场 >

关于下面程序说法正确的是( ...

[不定项选择题]
32位系统中关于下面程序说法正确的是(      )
class Item {
private:
  char *desc;
  int storage;
public:
  Item() {
    desc = new char[51];
  }

  void setInfo(char *dsrc, int num) {
    strcpy(desc,dsrc);
    storage = num;
  }
};

int main() {
  Item stock;

  stock.setInfo("pen",20);

  return 0;
}


  • main函数定义了一个stock对象占8个字节
  • storage和desc成员各占4个字节
  • 存在内存泄漏的问题
  • 存在编译错误
这里没有明确指出是32位还是64位,所以AB都应该是错的,感觉应该选C,用new开辟的空间没有在析构函数中释放delete [] desc
发表于 2019-08-15 18:08:09 回复(4)
改了的题目是“32位系统中关于下面程序说法正确的是(      )”
那B为什么还是错的呢?
发表于 2023-08-15 17:47:02 回复(0)
“pen”为什么可以作为指针传递给dsrc
发表于 2022-06-02 11:26:25 回复(2)
编译环境:x86-64编译器,编译选项为-m32,即32位系统编译
正确答案应该为:ABC
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;

class Item {
private:
  char *desc;
  int storage;
public:
  Item() {
    desc = new char[51];
  }

  void setInfo(char *dsrc, int num)
   {
    cout << sizeof(storage) << endl;  //4
    cout << sizeof(desc) << endl;  // 4
    strcpy(desc,dsrc);
    storage = num;
  }
};

int main()
 {
  Item stock;
  cout << sizeof(stock) << endl; //8
  stock.setInfo("pen",20);

  return 0;
}

答案输出为: 
 
编辑于 2022-07-26 20:53:21 回复(0)
楼上正解,不说多少位就讲对齐的都是耍流氓,唯一能确定死刑的是 内存泄漏。
-----C
发表于 2019-10-07 14:03:09 回复(0)
感觉ABCD都是对的啊,
A选项,如果是32位系统,无论编译器默认对齐字节数为1、2、4、8、16,类对象大小一定是8。
B选项,char* 和 int各占4个字节
C选项,new 没有相应的 delete
D选项,VS编译器会直接报错,g++编译器也会警告:ISO C++ forbids converting a string constant to ‘char*’
发表于 2023-12-07 20:32:55 回复(0)
为什么牛客网总是有这种牛马题,既然改了题目,能不能把正确答案也改一改,跟shi一样让人恼火
发表于 2023-05-03 13:10:44 回复(0)
牛马题,有些编译器会报const char*不能给char*赋值,改成32位的话B错哪了呢
编辑于 2024-01-13 11:56:40 回复(0)
32位指针都是4字节,64位指针都是8字节,4+4不等于8?
发表于 2023-12-04 21:38:36 回复(0)
为什么在64位系统下运行,stock是16个字节,desc是8个,storage是4个,stock不是应该12个字节吗?用的菜鸟的在线编译和vs都是这样。求解答
发表于 2023-08-19 01:50:02 回复(2)
注意这里没有virtual,因此所有的内存占用全部来源于变量不包括虚函数
发表于 2023-03-04 11:37:42 回复(0)
在64位下  指针是8  int 4个  同样道理32位下 指针4 int 4  B应该是对的 ;在c++是禁止字符串常量向指针转换的,所以它那个传参是有警告的  应该用个数组
发表于 2023-02-27 11:35:02 回复(0)
内存泄漏还能接受一点,这个字节数不是4吗,上来果断把B加上了,G
发表于 2022-09-12 20:43:54 回复(0)
pen不是常指针? 可以赋值给dsrc?
发表于 2022-05-06 15:31:06 回复(2)
又是360的题目
发表于 2019-09-02 08:31:36 回复(0)
这题,让人无语
发表于 2019-08-19 14:41:47 回复(0)