The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как отобразить двумерный массив в разделяемую память процесс..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как отобразить двумерный массив в разделяемую память процесс..."
Сообщение от frank Искать по авторуВ закладки on 03-Дек-04, 12:45  (MSK)
Как отобразить двумерный массив в разделяемую память процесса ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Как отобразить двумерный массив в разделяемую память процесс..."
Сообщение от klalafuda emailИскать по авторуВ закладки on 03-Дек-04, 12:59  (MSK)
>Как отобразить двумерный массив в разделяемую память процесса ?

а в чем собственно проблемы с отображением? конкретнее please.

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как отобразить двумерный массив в разделяемую память процесс..."
Сообщение от frank Искать по авторуВ закладки on 03-Дек-04, 13:08  (MSK)
>>Как отобразить двумерный массив в разделяемую память процесса ?
>
>а в чем собственно проблемы с отображением? конкретнее please.
>
>// wbr

у меня есть двумерный массив необходимо его отобразить в память(желательно средствами system V), привожу код прогу, необходимо как-то выделить память для каждой строки массива, (сейчас в данной проге segmentation fault)

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <errno.h>

int main()
{
int **array; //будущее двумерного массива
int shmid;

int new = 1;
char pathname[] = "1.c";
key_t key;

if((key = ftok(pathname,0)) < 0){
printf("Can\'t generate key\n");
exit(-1);
}

int i;

for(i=0;i<4;i++) {
array[i][0] = malloc(sizeof(int*));
    }


if((shmid = shmget(key, 3*sizeof(int*), 0666|IPC_CREAT|IPC_EXCL))<0){

if(errno != EEXIST){


printf("Can\'t create shared memory\n");
exit(-1);
} else {


if((shmid = shmget(key, 3*sizeof(int*), 0)) < 0){
printf("Can\'t find shared memory\n");
exit(-1);
}
new = 0;
}
}

  
if((array = (int **)shmat(shmid, NULL, 0)) == (int **)(-1)){
printf("Can't attach shared memory\n");
exit(-1);
}


if(new){
array[0][0] = 1;
array[1][0] = 0;
array[2][0] = 1;
} else {
array[0][0] += 1;
array[2][0] += 1;
}


printf("%d,%d,%d" array[0], array[1], array[2]);

if(shmdt(array) < 0){
printf("Can't detach shared memory\n");
exit(-1);
}
return 0;
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как отобразить двумерный массив в разделяемую память процесс..."
Сообщение от frank Искать по авторуВ закладки on 03-Дек-04, 13:21  (MSK)
там блин в printf ошибка вкралась, но вопрос по память остается
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Как отобразить двумерный массив в разделяемую память процесс..."
Сообщение от Murr Искать по авторуВ закладки(??) on 03-Дек-04, 15:33  (MSK)

> for(i=0;i<4;i++) {
> array[i][0] = malloc(sizeof(int*));
>    }
>

array[i] указывает в молоко.

Как я понимаю, ты хотел сделать что-то вроде:
array = malloc(4*sizeof(int*));
for (i=0; i<4; i++)
    array[i] = malloc(4*sizeof(int));

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Как отобразить двумерный массив в разделяемую память процесс..."
Сообщение от frank Искать по авторуВ закладки on 04-Дек-04, 11:46  (MSK)
благодарю


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру