我有以下情况.我的目标是使a和b这样两者都指向相同的记忆.但条件是它们都是指针.我该怎么做?
struct myStruct
{
struct anotherStruct* anoStrct;
};
main()
{
struct myStruct *a=( struct myStruct*)malloc(sizeof( struct myStruct));
struct myStruct *b=( struct myStruct*)malloc(sizeof( struct myStruct));
a=b;
}
Run Code Online (Sandbox Code Playgroud)
你可以为一个指针,例如分配空间,a如
struct myStruct *a= malloc(sizeof( struct myStruct));
Run Code Online (Sandbox Code Playgroud)
并将此指针指定为bas
struct myStruct *b = a;
Run Code Online (Sandbox Code Playgroud)
编辑:当您复制指针并将其用于某些操作时,您还必须小心复制,即复制是浅拷贝还是深拷贝.请参考深拷贝和浅拷贝之间有什么区别?更多细节.
在上述代码段,如果下面的语句初始化后执行b与a,你会遇到一个段错误的原始指针已被释放.
free(b);
a->anoStrct = malloc(sizeof(struct anotherStruct));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |