|
|
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Это развитие вот этой темы . Изопропил Код: plaintext 1. 2. 3. 4. 5. 6. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Поехали вопросы: Зачем этот цикл?: for (int i = 0; i < sz; i++) s += d[i] . Нужно, чтобы метод Test возвратил массив L типа double. Если я напушу вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. Это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:43:56 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Нет. Не нормально. Указатели могут быть использованы только в контексте unsafe. Как же поиметь массив L? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:53:15 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Не надо unsafe... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:08:21 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Если на С-стороне использовать COM Safe Array, на C#-стороне всё упростится. Маршалинг по умолчанию для массивов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:17:31 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
vlsafНет. Не нормально. Указатели могут быть использованы только в контексте unsafe. Как же поиметь массив L? пометь все свои классы unsafe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:20:58 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Алексей К, в библиотеке - malloc , не выйдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:21:29 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Алексей К, топикстартеру нужно без копирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:21:58 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
vlsafЗачем этот цикл?: for (int i = 0; i < sz; i++) s += d[i] . просто так для примера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:23:15 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
ИзопропилАлексей К, топикстартеру нужно без копированияЕсли выделять память под массив на дотнетной стороне, полагаю, копирования не будет? Код: c# 1. 2. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:26:15 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Алексей КЕсли выделять память под массив на дотнетной стороне, полагаю, копирования не будет? предлагалось - не годится ( Создание одномерного массива типа double размерности N ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:28:02 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
vlsaf Код: c# 1. 2. 3. 4. 5. 6. 7. 8. Это нормально? Это не может быть нормально - double* L скроет параметр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:31:07 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
ИзопропилvlsafНет. Не нормально. Указатели могут быть использованы только в контексте unsafe. Как же поиметь массив L? пометь все свои классы unsafeПолучается что так. Может лучше скопировать? Неужели там так много? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:40:06 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
ИзопропилАлексей К, в библиотеке - malloc , не выйдеток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:49:37 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Алексей КПолучается что так. Может лучше скопировать? Неужели там так много? грят - долго http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1089889&msg=15902770 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 16:00:34 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Изопропил, как быть с памятью, которая выделяется на С++ в нативном коде? Надо ее освобождать через Marshal.FreeCoTaskMem(p)? Хотя это уже будет после всех расчетов, даже пока не знаю где. Где-то в одной из секций unsafe{...}. Верно? Есть какие-то ходы, которые позволяют не следить за памятью. Например С++ код у нас прописан статическим, значит от вызова к вызову переменные в нем сохраняет свои значения. Можно-ли в коде на С++ следить за памятью? И перед CoTaskMemAlloc, если там что-то было , то освободить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 16:29:26 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
vlsafИзопропил, как быть с памятью, которая выделяется на С++ в нативном коде? для используемой библиотеки, как я понял, нужно вызывать (раздел 2.2 документации) SUPERLU_FREE () Destroy_CompCol_Matrix() Destroy_SuperMatrix_Store() Destroy_SuperNode_Matrix() StatFree() PS CoTaskMemAlloc библиотекой не используется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 16:35:44 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
Использует С++ оболочка над этой библиотекой. Вот твой пример: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 16:48:50 |
|
||
|
unsafe c#
|
|||
|---|---|---|---|
|
#18+
vlsaf, оболочка пусть и освобождает что нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 16:50:21 |
|
||
|
|

start [/forum/topic.php?fid=20&gotonew=1&tid=1403003]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 387ms |

| 0 / 0 |
