In the specification of VkDescriptorPoolSize(3) Manual Page
descriptorCount is the number of descriptors of that type to allocate.
but if I set this descriptorCount to 0,my program can still run.Is this member just a indication of how many descriptors might be allocated but not a restriction?Is my understanding correct?
No, you should always specify the amount of descriptor types you require from a pool. If you don’t do that, your application does not conform to the specs and implementations are free to fail.
In your case you’re probably running on an implementation that does not care about pool sizes so it only works because the driver doesn’t care.