можно использовать предложение [
#define arraysize(ar) (sizeof(ar) / sizeof(ar[0]))
] Will Dean для замены магического числа 3 здесь с arraysize (str_array) - хотя я не забываю там быть некоторым особым случаем, в котором та конкретная версия arraysize могла бы сделать Что-то Плохо (извините, я не могу сразу помнить детали). Но это очень часто работает правильно.
случай, где это не работает, - когда "массив" является действительно просто указателем, не фактическим массивом. Кроме того, из-за пути массивы передаются функциям (преобразованный в указатель на первый элемент), это не работает через вызовы функции, даже если подпись похожа на массив — some_function(string parameter[])
действительно some_function(string *parameter)
.
Из блога Джона Брейквелла существует одиннадцать возможностей:
http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/761035.aspx
Я бы проверил версию вашей очереди и количество подключений (к и из) ваша очередь открыта во время ошибки. Любой из этих "мог" вызвать вашу ошибку.