#include <malloc.h>
#include <string.h>
char *memory, *currentPointer
void ShareMemory( char function, char *a )
{
switch (function)
{
case 'c':
memory = ( char * )malloc( 65 * sizeof( char ) )
memory[64] = 0
currentPointer = memory
break
case 'r':
printf("%s", memory)
printf("\n")
break
case 'w':
strcpy( currentPointer, a )
while( *currentPointer != '\0' )
{
currentPointer++
}
break
case 'd':
free(memory)
break
default:
printf("wrong parameter!")
}
}
int main()
{
char *a = "aaaaa"
ShareMemory('c', a)
ShareMemory('r', a)
ShareMemory('w', a)
a = "bbbbb"
ShareMemory('w', a)
ShareMemory('r', a)
ShareMemory('d', a)
return 0
}
看内存值变化:
#include<stdio.h>/*
* 低4个字节n x两个一起用的
*/
union u
{
int n
double x
} num
void main()
{
printf("sizeof(num) = %u\n", sizeof(num))//输出的是8也就是是double的大小
printf("%08X\n", &num)
num.n = 10 //8个字节中低4个字节赋值为10
num.x = 15.5 //8个字节赋值为15.5
printf("%d\n", num.n)
printf("%f\n", num.x)
}
共享内存用于进程之间通信,如果是多线程,用全局变量+信号量互斥就可以了呀?非要用的话,一个进程用shmget创建共享内存区,然后用shmat连接共享内存进行访问
注意要配合信号量互斥,共享内存本身是没有同步机制的。