Можете ли вы привести примеры советов, которые я перечислил в отношении calloc стандарта c11, чтобы помочь мне понять их?

Когда я читал ссылки на calloc в ссылках на calloc в cppreference, я обнаружил следующие советы, которые я не получил.

  • calloc является поточно-ориентированным: он ведет себя так, как будто обращается только к тем ячейкам памяти, которые видны через его аргумент, а не к статическому хранилищу.

  • Предыдущий вызов free или realloc, который освобождает область памяти, синхронизируется с вызовом calloc, который выделяет ту же или часть той же области памяти. Эта синхронизация происходит после любого доступа к памяти функцией освобождения и перед любым доступом к памяти calloc.

Можете ли вы дать мне примеры, чтобы помочь понять это?

1 ответ

Это просто означает, что calloc будет отлично работать, если вы используете его в многопоточной среде (множество потоков работает одновременно, и все выделение, освобождение или перераспределение памяти, как сумасшедшие, не проблема).

Поскольку не все функции C и C++ дают такую ​​гарантию, об этом следует упомянуть в документации. Обычно вы должны предполагать, что когда безопасность потоков не упоминается, это не потокобезопасность.

Другие вопросы по тегам