c - C中的变量定义和内存分配

标签 c memory allocation definition

作为 C 初学者,我想知道同一变量的双重定义的内存分配结果是什么,即:

第一个文件:file.h

int data;

第二个文件:main.c

#include "file.h"
...
int data = 56;
...

最佳答案

第 1 点。#include file.h 是错误的。您至少需要编写 #include "file.h"

第二点。这个概念本身也是错误的,因为这两个变量都在全局空间中。它会给你多个定义错误。

注意:但是,如果您在函数内执行int data = 56;,那就没问题了,因为到那时,它将成为局部变量到该功能。

此外,我建议阅读有关 include guard 的内容。否则,如果您在头文件中定义变量,则在源文件中多次包含头文件也会产生多重定义错误。

最佳实践:

  • 在头文件中声明变量。 [extern int 数据;]
  • 定义(其中一个)源文件中的变量。 [int data = 56;/int data;]

关于c - C中的变量定义和内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673123/

相关文章:

c++ - 当类对象完成时,是否会释放为 C++ 类的数据成员动态分配的内存?

c - 将项目推送到链表 (C)

c - 无法使用 gcc 编译和链接 main.c 到另一个源文件

ios - 主线程上昂贵的 renderInContext 内存使用

python - 防止 RAM 分页到交换区 (mlock)

c# - 堆内存管理.Net

C : Process keeps exiting before being able to input anything

c - 如何在 vim 中自动格式化/缩进 C 代码?

c - 在C中是否需要对char指针地址进行初始化?

c - 将缓冲区 (char*) 传递给 C 中的函数