在C中声明向量作为全局变量
在C中声明一个向量为全局是个好习惯吗?
这就是我做的. #include <vector> std::vector<int> vec; 我的程序成功编译,但我不知道这是否可以导致运行时 请指教. 解决方法
这是安全的; vec变量的存储将被静态分配,并且它的默认构造函数将在某个时候被调用(恰好在整个程序的上下文中没有严格定义,因为没有严格定义跨平移单元的初始化顺序).
向量本身将其存储分配给堆,因此如果将该向量实例化为局部变量,则扩展将不会有任何限制:您将基本上受限于可以连续存储的内存量在时间点分配矢量需要重新分配其内部存储. 所有这一切说,虽然这样做是安全的,但并不一定是好的做法;它属于每个其他全局变量或全局可访问的存储位的域,这可能是一个有争议的主题.一般来说,我建议,最好避免全局变量作为规则.虽然在某些情况下可能是可以接受的,但是全局访问与您控制对变量的访问的能力相违背,并对其执行不变量以及控制或暗示的状态.这可能导致难以维护的系统作为代码库的缩放,因为这些访问路径没有明确说明. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |