首页 > 试题广场 > 在32位系统中,关于下面程序说法正确的是( &nb
[不定项选择题]
在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个字节
  • 存在内存泄漏的问题
  • 存在编译错误
A,B 指针类型大小就是机器地址空间也就是 32/8=4字节,int类型占4字节,所以共8字节 C 在成员函数中new出来的地址空间,要在自定义析构函数去delete
发表于 2019-11-23 10:46:05 回复(0)
<p>对象中动态数组所占内存不算在这个对象所占内存中。对象所占空间编译时就已知,而动态数组是运行时才分配大小。</p>
发表于 2020-04-22 15:50:07 回复(0)
B 哪里有错?
发表于 2019-08-30 10:39:13 回复(8)
调用成员函数时传入的参数“pen”是常量字符串,成员函数没const,编译不通过
发表于 2020-07-09 22:42:23 回复(1)

成员函数可以看作是类作用域的全局函数,不在对象分配的空间里


对象调用成员函数时,编译器可以确定这些全局函数的地址,通过传入this指针 和 其他参数完成函数的调用,所以类中没有必要存储成员函数的信息


编辑于 2020-03-03 13:27:19 回复(0)

New了字节在析构函数中要delete

发表于 2020-01-29 19:20:12 回复(0)
应该是ABC
发表于 2019-10-25 03:12:52 回复(0)
stock对象不止8个字节吧,创建stock调用构造函数后不是8+51*1=59,再字节对齐不是60字节么。
发表于 2019-10-14 22:10:47 回复(2)