Я пытаюсь освободить память t_data, которая назначена в качестве фиктивной переменной.(Код ниже).Теперь, как только я освобождаю t_data, программа выдает ошибку повреждения кучи, но вместо этого, если я копирую весь материал из тела в новую память для t_data, все работает нормально.Код удаления вызывается где-то внизу строки в другом методе класса (здесь не показан), он просто использует указатель t_Data для удаления памяти.
jshortArray val = (jshortArray)(m_pJVMInstance->m_pEnv->CallStaticObjectMethod(m_imageJ_cls, method_id, arr, (jint)t, (jint)c));
jsize len = m_pJVMInstance->m_pEnv->GetArrayLength(val);
jshort* body = m_pJVMInstance->m_pEnv->GetShortArrayElements(val, 0);
unsigned short int* dummy = reinterpret_cast<unsigned short int*>(body);
//t_data = dummy; //NOTE: Once you free t_data later exception is thrown.
t_data = new unsigned short int[len];
for (int i = 0; i < len; i++) {
unsigned short int test = *(body + i);
*((unsigned short int*)t_data + i) = test;
}
Я пытаюсь найти способ, которым у меня нетзапустить цикл for, чтобы скопировать данные тела в t_data и все еще иметь возможность освободить память.(Цикл for занимает слишком много времени для больших изображений.)