bugprone-no-escape¶
Finds pointers with the noescape
attribute that are captured by an
asynchronously-executed block. The block arguments in dispatch_async()
and
dispatch_after()
are guaranteed to escape, so it is an error if a pointer with the
noescape
attribute is captured by one of these blocks.
The following is an example of an invalid use of the noescape
attribute.
void foo(__attribute__((noescape)) int *p) { dispatch_async(queue, ^{ *p = 123; }); });