一些关于C++编程的细节问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 07:33:02
有几个细节问题我想向大家请教:

1.如果有一个函数用动态分配内存的方法生成了一个局部变量,在函数结束的时候这个变量的内存是否会被自动回收还是需要手动来回收?
2.返还值是一个引用和普通返还值有何细节上的区别?有没有什么要注意的地方?
3.哪些C++的头文件是专为Windows用的?
4.函数能否返还一个数组?就像在Java里那样?
5.如果连续的动态分配单独的空间,它们在内存里的位置是否是连续的?还是随机分配的?
1.如果动态分配的局部变量需要手动回收,那如果遇到某些情况,这个局部变量被函数返还,它就必须在函数外面进行手动回收?
2.有时候我设定一个函数返还一个引用,在函数体内定义一个局部变量,然后返还它,编译器会给我一个警告(Linux下),这是为什么?如果这个局部变量作为引用被返还,那它会不会在函数结束后被自动回收?
还有几个额外的问题:
6.explicit关键字在什么时候用?
7.extern "C" 用得多吗?我几乎没见过用它的程序

1、在含数内部动态分配的内存,在含数结束时不会自动释放的,要手动回收。
2、引用就是一个别名,所以返回引用就是返回变量本身,而返回普通值的话是 返回该值的拷贝。
3、只能告诉你有很多
4、含数不能返回一个数组,因为数组不能够按整体操作的,但可以返回一个数组的首地址,比如在堆中分配一块数组内存,然后返回首指针。
5、不能保证是连续的,是随机分配的,哪里有空闲的内存空间可能就会被分配给它。

1:如果动态分配一个内存来生成一个局部变量,结束时候是手动收回的 delete
2:返回值是引用或返回值有很大的关系,就是返回引用是返回对象本事,如果是普通值,那么会复制一个对象的副本给返回值变量。
3:这个太多
4:函数不可以返回一个数组,但是可以返回数组的一个指针,指向数组中任何元素的指针。因为数组是不可以赋值的。
5:是连续的,即使你分配的足够大,不连续,在内存的指向后,也被认为是连续的,会满足连续内存的所有要求,祝您好运,什么不明白可以继续讨论。

1.系统自动分配自动回收,手动分配的手动回收
2.返回值有引用嘛?只有参数才有吧!
3.这个不清楚,没在Linux下玩过
4.可以返回指针,该指针指向数组的首地址即可
5.既然是分配的单独空间,那当然就不一定连续了