Articles of delete operator

Duplo livre ou corrupção … mas por quê?

#include using namespace std; class Test{ int *myArray; public: Test(){ myArray = new int[10]; } ~Test(){ delete[] myArray; } }; int main(){ queue q Test t; q.push(t); } Depois de executar isso, recebo um erro de execução “duplo livre ou corrompido”. Se eu me livrar do conteúdo do destruidor (a delete ) funciona bem. O […]

delete uma matriz de objects

Aloquei e array de objects Objects *array = new Objects[N]; Como devo excluir este array? Somente delete[] array; ou com iterar sobre os elementos da matriz? for(int i=0;i<N;i++) delete array[i]; delete[]; obrigado ATUALIZAR: Eu mudei o corpo do laço como delete &array[i]; para forçar o código a compilar.

Ainda é seguro excluir nullptr em c ++ 0x?

Em c++03 , é bastante claro que a exclusão de um ponteiro nulo não tem efeito. De fato, é explicitamente declarado em §5.3.5/2 que: Em qualquer alternativa, se o valor do operando de exclusão for o ponteiro nulo, a operação não terá efeito. No entanto, no atual rascunho para o c++0x esta sentença parece estar […]

Como você ‘realloc’ em C ++?

Como posso realloc em C ++? Parece estar faltando na linguagem – há new e delete mas não resize ! Eu preciso disso porque como meu programa lê mais dados, eu preciso realocar o buffer para mantê-lo. Eu não acho que delete o ponteiro antigo e criar um novo, maior, é a opção certa.

sobrecarga new / delete

Estou fazendo um pequeno localizador de vazamentos de memory no meu programa, mas minha maneira de sobrecarregar new e delete (e também new [] e delete []) não parece fazer nada. void* operator new (unsigned int size, const char* filename, int line) { void* ptr = new void[size]; memleakfinder.AddTrack(ptr,size,filename,line); return ptr; } A maneira que […]

Por que não há expressão de exclusão de colocação em C ++?

Por que o C ++ não excluiu o canal que corresponde diretamente ao novo canal, isto é, chama o destruidor e chama o operador de exclusão de posicionamento apropriado? Por exemplo: MyType *p = new(arena) MyType; … //current technique p->~MyType(); operator delete(p, arena); //proposed technique delete(arena) p;

Excluindo um ponteiro para const (T const *)

Eu tenho uma pergunta básica sobre os pointers de const. Eu não tenho permissão para chamar qualquer function de membro não const usando um ponteiro const. No entanto, tenho permissão para fazer isso em um ponteiro const: delete p; Isto irá chamar o destruidor da class que em essência é um ‘método’ não-constante. Por que […]

Existe algum motivo para verificar um ponteiro NULL antes de excluir?

Muitas vezes, vejo código herdado verificando NULL antes de excluir um ponteiro, semelhante a if (NULL != pSomeObject) { delete pSomeObject; pSomeObject = NULL; } Existe algum motivo para verificar um ponteiro NULL antes de excluí-lo? Qual é o motivo para definir o ponteiro para NULL depois?

Por que um replaceia novos operadores padrão e excluir?

Por que um replaceia o operador padrão como new e delete com um new personalizado e delete operadores? Esta é a continuação do Overloading new e delete no imensamente iluminado C ++ FAQ: Sobrecarga do operador. Uma input de acompanhamento para esta FAQ é: Como devo escrever o padrão ISO C ++ em conformidade com […]

Como o delete sabe que é um array?

Tudo bem, acho que todos concordamos que o que acontece com o código a seguir é indefinido, dependendo do que é passado, void deleteForMe(int* pointer) { delete[] pointer; } O ponteiro pode ser todo o tipo de coisas diferentes, e então executar uma delete[] incondicional delete[] é indefinida. No entanto, vamos supor que estamos de […]