我对DLL和LIB知之甚少,除了它们包含程序正常运行所需的重要代码 - 库.但是为什么编译器会生成它们呢?将所有代码包含在单个可执行文件中会不会更容易?DLL和LIB之间的区别是什么?
我很难理解的一件事是编译器是如何工作的.我遇到了很多困难,但特别是我总是把标题和库混在一起.如果有人能稍微清楚一点,那就太好了.
分配给new
运算符的内存与通过简单变量声明分配的内存之间有哪些技术差异,例如int var
?c ++是否有任何形式的自动内存管理?
特别是,我有几个问题.首先,由于使用动态内存,您必须声明一个指针来存储您使用的实际内存的地址,动态内存不会使用更多内存吗?除非你声明一个数组,否则我不明白为什么指针是必要的.
其次,如果我要做一个像这样的简单函数:
Run Code Online (Sandbox Code Playgroud)int myfunc() { int x = 2; int y = 3; return x+y; }
...并且调用它,一旦它的存在范围结束,函数分配的内存是否会被释放?动态记忆怎么样?
A具有以下原型的功能:
void arryprnt(int[], string, int, string, string);
Run Code Online (Sandbox Code Playgroud)
并定义:
void arryprnt(int[] a, string intro, int len, string sep=", ", string end=".") {
// stuff
}
Run Code Online (Sandbox Code Playgroud)
而我这样称呼它:
arryprnt(jimmy, "PSEUDOJIMMY: ", 15);
Run Code Online (Sandbox Code Playgroud)
...当我调用arryprnt时,我得到一个编译错误,说我根据原型所说的使用了太少的参数."好的,"我在想,"编译器不知道某些arryprnt的参数有默认值.我只是将参数从定义复制到原型中." 然而,我确实遇到了一个编译器错误,告诉我我正在调用带有太多参数的arryprnt !我可以只显式指定所有参数,但有没有办法调用它而不指定所有参数?