Test on CYW943438 with sdk-6.1.
To test if it is fine to repeat init/deinit bt_stack by calling wiced_bt_stack_init/wiced_bt_stack_deinit.
My test code is calling wiced_bt_ble_observe() once got BTM_ENABLED_EVT in the wiced_bt_stack_init callback.
The wiced_bt_ble_observe() scan for 10 seconds and once it is done.
Calling wiced_bt_stack_deinit and wiced_bt_stack_init again to re-start scan.
Observe the memory usage by mallinfo().
Then you can find the "Memory in use keep growth, the available memory becomes smaller and smaller.
i.e. It's clearly a memory leak while re-init bt stack.
I reported a bug that "wiced_bt_ble_observe()" can silently stop working:
So I'm trying to address that issue by deinit btstack then init btstack again.
However, I just found the memory leak.
In additional, this thread mentions that re-initializing the BLE Stack is the only way to change the scan mode from active to passive and vice-versa.