Change addresses are no different than other addresses, except that they do not get shown in the UI, i.e. they are not visible in the recent transactions column. Just like all other addresses they will be checked for new balances whenever a new block is added to the database.
BitcoinCore keeps a number of unused addresses on hand of the size of keypool
. The standard setting is 100 keys.
Whenever you create a transaction that doesn't spend a previous UTXO completely, the change gets sent to one of the previously unused addresses in the keypool, and a new address gets generated in the back of the keypool, to keep the number of unused addresses constant.
Likewise, when you request a "new receiving address" the first unused address from the keypool
is popped, and a new one is generated and pushed in the back.
Even before the addresses are visible, the addresses are stored in the wallet.dat
allowing you to create backups only every once in a while. (Well, you should at least every keypool
transactions.)
Note: The keypool will only be refilled if the wallet is unlocked.
Is the address deleted
Since it's possible to back up the wallet's keypool, it doesn't seem like the client could know for sure that it never gave that address out as a receiving address.