Olá, Heloisa! Tudo bem?
Pelo que você descreveu, o comportamento do código está correto. Quando você cria um int
dinamicamente com new int
, ele realmente aloca 4 bytes, que é o tamanho típico de um inteiro em muitas arquiteturas.
Se você quiser ver mais alocações de memória, pode tentar criar objetos mais complexos. Por exemplo, você pode criar uma std::string
ou um array de inteiros, o que resultará em mais chamadas ao operador new
:
#include <iostream>
#include <string>
#include <cstdlib>
void* operator new(size_t bytes) {
std::cout << "Alocando " << bytes << " bytes" << std::endl;
return malloc(bytes);
}
int main() {
int* ptr = new int; // Aloca 4 bytes
delete ptr;
std::string* str = new std::string("Teste"); // Aloca memória para a string
delete str;
int* array = new int[10]; // Aloca 40 bytes (10 inteiros)
delete[] array;
return 0;
}
Este código deve mostrar mais alocações de memória. A std::string
pode alocar memória adicional na heap, dependendo da implementação.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.