6

我想知道是否可以删除,即从使用中删除一个 C 变量,例如,一旦该变量被使用一次?

前段时间我在思考这个问题,一个问题出现在我的脑海中。

C有很多数据类型,我们可以创建一个数据类型的变量,用简单的代码说整数

int i;

一旦我们以这种方式创建了一个变量,如果我们以后不需要它,我们如何“删除”它?

我在网上搜索,但没有找到任何执行此操作的 C 命令。'k 被删除',我的意思是'k 已不复存在'。我的意思是,一旦我们不需要这个变量,它就是一种浪费,应该被删除。

C 确实提供了该free()功能,但它仅适用于使用calloc(), malloc(), 或分配的内存realloc()

那么int,一旦使用了变量,如何删除它?

4

2 回答 2

15

你没有。一旦超出范围,对象的生命周期就会结束(它被称为自动对象,因为它会被自动清理)。

例如

void foo() {
    int j = 3;

    while (blah) {
        int i = 5;
    }

    // i no longer exists
}

// j no longer exists
于 2012-06-09T12:04:46.840 回答
5

在 C 中,有一个对象的存储期限的概念,它决定了它的生命周期:

  • 静态存储存在于程序的整个执行过程中
  • 线程存储一直存在到线程终止
  • 自动存储直到离开周围的块
  • 分配的存储需要通过显式取消分配free()

Allocated storage aside, the language runtime will take care of reclaiming memory (eg decreasing the stack pointer to discard call frames, which 'frees' automatic storage).

于 2012-06-09T12:18:50.433 回答