В следующем цикле я пытаюсь скопировать данные, хранящиеся по адресу voidPtr. Известно, что данные представляют собой целочисленный массив длины. Я прочитал, что приведение этого массива в int, а затем выполнение копии (как показано ниже) должно работать.Копирование массива, хранящегося в указателе Void, в Int Array
int intArr[count];
for (int i = 0; i<count; i++){
intArr[i] = ((int*) voidPtr)[i];
}
Однако, когда я пытаюсь напечатать массив int int, я получаю seg-fault.
for (int i = 0; i<count; i++){
printf("%d ", intArr[i]);
}
Любые идеи?
Во-первых, вы должны просто «memcpy (intArr, voidPtr, count * sizeof (int));' для копии (это проще и эффективнее). Во-вторых, не могли бы вы разместить больше кода. То, что вы показали, похоже, не содержит конкретных ошибок. – 865719
Как уже упоминалось в @ 865719, вам необходимо предоставить полный пример, который показывает проблему. Приведенный выше код будет работать, если все ваши предположения верны (для которых вы не предоставили код). [Здесь] (http://cpp.sh/8aqh) - пример. Вы также можете пересмотреть свой дизайн, поскольку использование 'void *' для передачи других типов не является хорошей практикой проектирования и может легко вызвать у вас проблемы. – crayzeewulf
@ 865719, используя malloc и memcpy, разрешил проблему. Я предполагаю, что размер контейнера, который я создал, не был достаточно большим. Огромное спасибо за предложение, и я постараюсь быть немного более основательным в будущих постах. – mongolol