- 论坛徽章:
- 5
|
rt,有个项目有个程序崩溃了,原因是shared segment corruption,然后造成这种原因的是另外一个程序导致的,现在我想模拟这种情况,但是我对共享内存也不太了解,能否有大侠知道?
我现在做的就是用ipcmk -M 10 做了一个内存,然后写了一个程序- 8 typedef struct{
- 9 char name[100];
- 10 }test;
- 11 int main()
- 12 {
- 13 int shmid=1427800126;
- 14 test* test_map;
- 15 test_map = (test*)shmat(shmid, NULL, 0);
- 16 for (int i = 0; i < 10; ++i)
- 17 {
- 18 char * tempname = "woshiyigetestwdkkeiskskdldlskieddkdiekdkdkdkdkddjjd";
- 19 memcpy((*(test_map+i)).name, tempname, 20);
- 20 }
- 21 if (shmdt(test_map) == -1)
- 22 std::cout << "error";
- 23 test_map = (test*)shmat(shmid, NULL, 0);
- 24 std::cout << (*test_map).name;
- 25 return 0;
- 26 }
复制代码 超出10个byte了都能好好的返回了,额,还有大侠知道其他方法不?
|
|