page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6247 次

3096 个回答

0 赞同

内存泄漏的场景有哪些?

内存泄漏的场景: malloc和free未成对出现;new/new []和delete/delete []未成对出现; 在堆中创建对象分配内存,但未显式释放内存;比如,通过局部分配的内存,未在调用者函数体内释放: char* getMemory() {     char *p = (char *)malloc(30);     return p; } int main() {     char *p = getMemory();     retu...

回答于 2022-01-08 10:53

0 赞同

内存的分配方式有几种?

在栈上分配:在执行函数时,局部变量的内存都可以在栈上分配,函数结束时会自动释放;栈内存的分配运算内置于处理器的指令集中,效率很高,但分配的内存容量有限; 从堆上分配:就是那些由 new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个 delete。如果程序员没有释放掉,那么...

回答于 2022-01-08 10:52

0 赞同

堆和栈有什么区别?

分配和管理方式不同: 堆是动态分配的,其空间的分配和释放都由程序员控制; 栈是由编译器自动管理的,其分配方式有两种:静态分配由编译器完成,比如局部变量 会由编译器释放; 产生碎片不同: 对堆来说,频繁使用new/delete或者malloc/free会造成内存空间的不连续,产生大量碎 对栈来说,不存在碎片问题,因为栈具...

回答于 2022-01-08 10:51

0 赞同

什么时候需要用hash_map,什么时候需要用map?

总体来说,hash_map 查找速度会比 map 快,而且查找速度基本和数据数据量大小无关,属于常数级别;而 map 的查找速度是 log(n) 级别。 并不一定常数就比 log(n) 小,hash 还有 hash 函数的耗时,明白了吧,如果你考虑效率,特别是在元素达到一定数量级时,考虑考虑 hash_map。但若你对内存使用特别严格,希望程序尽可能少消...

回答于 2022-01-07 15:03

0 赞同

STL中hashtable的底层实现?

hashtable中的bucket所维护的list既不是list也不是slist,而是其自己定义的由hashtable_node数据结构组成的linked-list,而bucket聚合体本身使用vector进行存储。hashtable的迭代器只提供前进操作,不提供后退操作 在hashtable设计bucket的数量上,其内置了28个质数[53, 97, 193,…,429496729],在创建hashtable时,会根据...

回答于 2022-01-07 15:02

0 赞同

vector 底层原理及其相关面试题?

(1)vector的底层原理 vector底层是一个动态数组,包含三个迭代器,start和finish之间是已经被使用的空间范围,end_of_storage是整块连续空间包括备用空间的尾部。 当空间不够装下数据(vec.push_back(val))时,会自动申请另一片更大的空间(1.5倍或者2倍),然后把原来的数据拷贝到新的内存空间,接着释 放原来的那片...

回答于 2022-01-07 15:01

0 赞同

list 底层原理及其相关面试题?

list 底层原理及其相关面试题 (1)list的底层原理 list的底层是一个双向链表,以结点为单位存放数据,结点的地址在内存中不一定连续,每次插入或删除一个元素,就配置或释放一个元素空间。 list不支持随机存取,适合需要大量的插入和删除,而不关心随即存取的应用场景。 (2)list的常用函数 C++STL list.push_back(...

回答于 2022-01-07 15:00

0 赞同

Vector如何释放空间?

由于vector的内存占用空间只增不减,比如你首先分配了10,000个字节,然后erase掉后面9,999个,留下一个有效元素,但是内存占用仍为10,000 个。所有内存空间是在vector析构时候才能被系统回收。empty()用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),vector所 占用的内存空间依然如故,无法保证内存...

回答于 2022-01-07 14:59

0 赞同

如何在共享内存上使用STL标准库?

1) 想像一下把STL容器,例如map, vector, list等等,放入共享内存中,IPC一旦有了这些强大的通用数据结构做辅助,无疑进程间通信的能力一下子强大了很多。 我们没必要再为共享内存设计其他额外的数据结构,另外,STL的高度可扩展性将为IPC所驱使。STL容器被良好的封装,默认情况下有它们自己的内存管理方案。 当一个元素...

回答于 2022-01-07 14:58

0 赞同

map插入方式有哪几种?

1) 用insert函数插入pair数据, mapStudent.insert(pair<int, string>(1, "student_one")); Copy to clipboardErrorCopied 2) 用insert函数插入value_type数据 mapStudent.insert(map<int, string>::value_type (1, "student_one"));Copy to clipboardErrorCopied 3) 在insert函数中使用make_pair()函数 m...

回答于 2022-01-07 14:57