假设我不想使用矢量并使用动态数组(仅用于学习目的)。从我分配的动态数组中,我想删除特定的索引。
int * array = new int[10];
delete &array[3];
当我尝试这样做时,我得到了SIGSEGV,Segmentation fault。
如何删除特定索引(比如索引3,我知道它的连续内存,它会创建漏洞,但仅用于学习目的),就像我正在尝试正确地执行上面操作一样,如果这是我的话,为什么我会出现分段错误存储器?
答案 0 :(得分:6)
您无法删除数组的元素。你只能删除你新的东西。要从数组删除元素,请将较高的元素复制到一个插槽中。
答案 1 :(得分:3)
你做不到。该阵列存储为连续存储器位置。你无法从中间删除。
答案 2 :(得分:2)
你必须有一个指针数组才能url(r'^logout/$', 'logout', name='logout'),
你的数组中的一个元素。
您可以将所有后续元素移回一个地方,但仅使用标准工具无法重新分配delete
内存。
或者您可以分配一个新数组并复制您想要的所有元素。
但最简单的方法是使用std::vector
和std::vector::erase
。