Массивы ограничены, как и любой другой примитив, структура или объединение.Ничто никогда не уничтожается в C, хотя массивы могут выходить за рамки.
Также, как и другие типы, массивы можно размещать в куче, вызывая malloc()
, чтобы выделить достаточно места для хранения желаемого числа.элементы, и обрабатывая возвращенный void *
как указатель на первый элемент.Такой массив будет действителен до тех пор, пока вы не вызовете free()
.
WRT Pthreads, опять же, правила такие же, как и для любого другого типа.Если вы определите массив как автоматическую (function-scope) переменную, он выйдет из области видимости, как только функция вернется;Вы не можете безопасно передать указатель на такой массив другому потоку.Но если вы разместите массив в куче, то вы можете передать указатель на этот массив (на что угодно внутри массива) где угодно, включая другой поток.Конечно, вам все еще необходимо обеспечить потокобезопасный доступ к содержимому с использованием соответствующих механизмов синхронизации.