小编pen*_*926的帖子

一个目录中的所有文件,linux

今天我在linux中尝试了一个脚本来获取一个目录中的所有文件.这很简单,但我发现了一些有趣的东西.

 #!/bin/bash
InputDir=/home/XXX/
for file in $InputDir'*'
do
  echo $file
done
Run Code Online (Sandbox Code Playgroud)

输出是:

/home/XXX/fileA /home/XXX/fileB 
Run Code Online (Sandbox Code Playgroud)

但是当我直接输入dir时,就像:

 #!/bin/bash
InputDir=/home/XXX/
for file in /home/XXX/*
do
  echo $file
done
Run Code Online (Sandbox Code Playgroud)

输出是:

/home/XXX/fileA
/home/XXX/fileB
Run Code Online (Sandbox Code Playgroud)

看来,在第一个脚本中,只有一个循环,所有文件名都存储在FIRST循环中的变量$ file中,用空格分隔.但是在第二个脚本中,一个文件名只在一个循环中存储在$ file中,并且有多个循环.这两个脚本之间究竟有什么区别?

非常感谢,也许我的问题有点幼稚..

linux bash

4
推荐指数
2
解决办法
171
查看次数

C++类成员存储

我刚才有一个关于c ++类成员存储的问题.

例如,我有一个这样的类:

class MyClass1{
    int a;
    int b[4];
    int c;
}
Run Code Online (Sandbox Code Playgroud)

在主要功能:

int main(){
    MyClass1 class1;
    MyClass1* class_ptr1= new MyClass1();
}
Run Code Online (Sandbox Code Playgroud)

那么成员a,b,c是如何存储的?对于class1,我认为所有成员都在堆栈中分配了一个空间,甚至是数组b.

那么class_ptr1怎么样?显然它是动态分配的,也是动态分配的成员,甚至认为它们不是指针.

非常感谢.

非常感谢回复.现在我明白,一旦动态分配了类,它的所有成员也会被动态分配.在这种情况下,一旦我使用完课程,我是否需要做任何事情来解除分配?我的意思是,它只是:

delete(class_ptr1);
Run Code Online (Sandbox Code Playgroud)

或者我需要先释放其成员.

c++ memory

3
推荐指数
1
解决办法
143
查看次数

指向常量 int 的常量指针

我刚刚开始学习C++中的“常数”概念,遇到了一个问题:

\n\n
int d=0;\nconst int* const pt = &d;\nd = 3;\ncout << *pt << endl;\n
Run Code Online (Sandbox Code Playgroud)\n\n

该脚本给出了“3”的输出。\n指针 pt 的定义应该解释为“指向常量 int 的常量指针 pt”(至少我这么认为)。但是,当我更改 d 的值时,pt 指向的 int 值也发生了更改\xef\xbc\x8c 那么它怎么会是“指向 CONSTANT int 的常量指针”???

\n\n

非常感谢。

\n

c++ pointers constants

1
推荐指数
1
解决办法
304
查看次数

关于Java内存管理

可能重复:
整数包装器对象仅在值127内共享相同的实例?

我对Java中的内存管理有疑问.

当我尝试以下代码时:

Integer a = 1;
Integer b = 1;
System.out.println(a==b); // this gives "true" 
Run Code Online (Sandbox Code Playgroud)

然而,

Integer a = 256;
Integer b = 256;
System.out.println(a==b); //this gives "false"
Run Code Online (Sandbox Code Playgroud)

为什么?

非常感谢.

java memory autoboxing

0
推荐指数
1
解决办法
133
查看次数

通过引用c ++删除对象

我遇到了这个我今天无法解释的问题.

int main(){
    vector<int> vec = subroutine();
    ...
    delete(&vec);
}

vector<int>& subroutine(){
    vector<int>* vec = new vector<int>();
    //Init the vec
    for(int i=0;i<vec.size();i++){
    ...
    }
    return *vec;
}
Run Code Online (Sandbox Code Playgroud)

它出现了一个错误:

double free or corruption (out): 0X00007fffa145ff50
Run Code Online (Sandbox Code Playgroud)

这绝对是该行的问题:

delete(&vec);
Run Code Online (Sandbox Code Playgroud)

但我无法解释,为什么有双免费?

c++ memory-management

0
推荐指数
1
解决办法
79
查看次数

标签 统计

c++ ×3

memory ×2

autoboxing ×1

bash ×1

constants ×1

java ×1

linux ×1

memory-management ×1

pointers ×1