今天我在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中,并且有多个循环.这两个脚本之间究竟有什么区别?
非常感谢,也许我的问题有点幼稚..
我刚才有一个关于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++中的“常数”概念,遇到了一个问题:
\n\nint 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可能重复:
整数包装器对象仅在值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)
为什么?
非常感谢.
我遇到了这个我今天无法解释的问题.
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)
但我无法解释,为什么有双免费?