rtel wrote on Friday, December 06, 2013:
The code, as you have provided it, is not correct because you show vTask1() exiting its function without deleting itself. Tasks must include an infinite loop, or be deleted. However, I assume you have cut out all the other source code to just show the line of interest.
First - it is perfectly ok to create tasks from inside other tasks.
Second - any call to xTaskCreate() will allocate a TCB structure and a stack for that task. If you create TaskX, then, without deleting TaskX you create TaskY the two tasks will not be using the same memory because both calls to xTaskCreate() will allocate RAM separately.
On the other hand, if you create TaskX then delete TaskX the memory allocated to TaskX will be freed again. If you subsequently create TaskY xTaskCreate() will allocate RAM for TaskY just like normal, and that RAM may or may not be the same that was previously allocated to TaskX. As TaskX has been deleted it does not matter if the same memory is reused.