C 结构声明是否占用内存?
声明结构而不创建C 结构声明是否占用内存?,c,object,structure,C,Object,Structure,声明结构而不创建结构的对象,该结构是否会占用内存中的数据成员空间?结构的定义通常不是C中二进制文件的一部分。它只存在于源代码中 当编译器看到对您的结构的引用时(通常用于分配或取消分配此结构实例的空间,通过对象变量访问其字段等),它会参考您的结构定义,以了解该数据类型的正确数字(主要用于计算数据类型大小和字段偏移) 当所有这些都完成后,结构定义本身就被遗忘了,只有数字被保存在程序中,不管它们在哪里被实际使用 因此,如果您根本不引用结构,那么就不应该存在它的痕迹 结构声明是否占用内存 否-在堆栈、堆
结构的对象
,该结构是否会占用内存中的数据成员空间?结构的定义通常不是C中二进制文件的一部分。它只存在于源代码中
当编译器看到对您的结构的引用时(通常用于分配或取消分配此结构实例的空间,通过对象变量访问其字段等),它会参考您的结构定义,以了解该数据类型的正确数字(主要用于计算数据类型大小和字段偏移)
当所有这些都完成后,结构定义本身就被遗忘了,只有数字被保存在程序中,不管它们在哪里被实际使用
因此,如果您根本不引用结构,那么就不应该存在它的痕迹
结构声明是否占用内存
否-在堆栈、堆或共享内存上声明变量之前,您不会消耗内存。您只需定义一个由多个其他数据类型组成的新数据类型
这将消耗内存:
const struct books myBooks={…初始化代码…};\\消耗代码内存(通常为ROM)
struct books myBooks={…初始化代码…};\\消耗数据内存(通常为RAM)
否。在已编译程序中,类型声明/定义仅作为编译时概念存在。它们在已编译代码中不留痕迹,也不影响运行时内存消耗。C程序中的存储被对象占用。类型不是对象。否(想想这意味着什么),但我不确定这是否有效。在哪个内存中?很抱歉,太迂腐了,但编译的程序占用了一些内存,源代码也占用了一些内存memory@AlexT:我的意思是,当我声明一个结构
而不创建该结构的任何对象
时,它是否为其数据成员
不,它不会占用堆栈、堆或静态存储中的内存对象
是一个OO概念。您是否通常将C结构
称为对象
?@bblincoe:在C语言术语中,对象不是OO概念。对象是一个左值,一个存储区域。C中的每个左值都是一个对象,不管它是不是一个结构实例或不。当你在C中声明了代码> int i;< />代码>,<代码> i <代码>是一个对象。(此外,C++对象的“对象”思想完全相同。”这与OO无关。谢谢你的澄清。
struct books
{
char name[100];
float price;
int pages;
};