Так что у меня есть проблема, которую я не могу понять.Я пишу некоторый код на C. Я продолжал сталкиваться с проблемами, при которых чтение из сети казалось бы случайным образом.
Я, наконец, отследил его до количества строк в коде.Я не могу в это поверить, но я проверил это довольно подробно.
База кода довольно массивная, поэтому я не уверен в общем количестве паритетов строк.Однако я знаю, что если я добавляю нечетное число, то программа работает, и если я добавляю четное число, это не так.Я пытаюсь прочитать что-нибудь по сети, все, что я получаю, это 0.Когда он работает, я получаю правильные данные.
кто-нибудь когда-нибудь слышал что-нибудь подобное?Или есть идеи, что может быть причиной этого?Я мог видеть, что часть данных программы становилась слишком большой и начинала препятствовать пространству другого кода, но тот факт, что ее нечетная / четная вещь полностью смущает меня.
спасибо
РЕДАКТИРОВАТЬ(Добавление дополнительной информации):
Платформа представляет собой специально разработанное устройство.база кода - redboot, но она значительно изменилась для пользовательского устройства.
, например:
// Это будет работать из-за нечетного числа строк.
char* str1 = "test";
char* str2 = "test2";
char* str3 = "test3";
int i = strlen(str1) + strlen(str2) + strlen(str3);
......................................
если бы я изменил последнюю строку на
int i = strlen(str1) + str(len2);
, чтобы компилятор оптимизировал str3, тогда код больше не будет работать.Я проверял это много раз с различными длинами строк, которые приводят к одинаковому нечетному / четному поведению.(Я просто отправляюсь в журнал отладки, чтобы он не был оптимизирован. Ничего сложного с ним не сделано.)Не имеет значения, был ли он выполнен или нет, что заставляет меня поверить, что это не переполнение стека.