Я меняю некоторые коды в библиотеке базы данных. Как это работает, я отправляю указатель на пустоту, чтобы получить размер его, я вызываю запрос и используя запрос, я вычисляю размер структуры. Теперь проблема в том, что я получаю struct как params, но функция не работает до/в середине первой выборки. После этого мне нужно очистить структуру, но у меня даже нет размера. Я знаю, что лучший способ - отправить размер структуры в качестве параметра, но у меня уже собраны тысячи и тысячи программ, библиотека - с 1996 года, поэтому мне нужно найти способ вычисления размера структуры, даже если тип недействительным.Получить размер структуры, переданной как функция void
Одна идея у меня было вычислить положение следующего элемента, который не в структуре
0x000010 0x000042
[int|char[30]|int|int][int]
Так размер 32, потому что 0x00042-0x000010 является 32.
Есть способ узнать, когда я вышел из строя.
прототип функции
int getData(char* fields, void* myStruct)
Мне нужно узнать размер структуры.
Извините, если я пропустил какую-либо информацию, код ОГРОМНЫЙ и, к сожалению, я не могу опубликовать его здесь.
Вы листинг myStruct для какого-либо типа структуры? Если это так, вы можете просто использовать sizeof этой структуры? – djechlin
Что такое '0x000010 0x000042 [int | char [30] | int | int] [int]'? BTW «0x00042 - 0x000010» - * 0x * 32. – wildplasser
Вы знаете что-нибудь о структуре структуры? Является ли переменный размер, в зависимости от первого поля int? BTW: размер 0x32 (50 десятичных знаков) не очень вероятен, так как ints необходимо выровнять по 4-байтовой границе (при условии, что 4 байта int и т. Д.) – wildplasser