In your example above they will literally point to the same thing.
It is also important to allocate and deallocate memory before and after use however, or else you will get unexpected behaviour and/or segmentation faults.
somestruct *A;
somestruct *B;
A = malloc(sizeof(somestruct));
B = A;
A->data = 5;
B->data = 6;
printf("Data in A: %d", A->data); /* Prints 6 */
printf("Data in B: %d", B->data); /* Also Prints 6 */
...
free(A);
It's also good practice to check the result of malloc and ensure that the operation was successful. This kind of situation can become an issue if for example you want to change the location A points to, and would also like to change the location B points to. Unless you change both, changing one pointers location will not update the other. This is where a double pointer would come in use. EG
somestruct *A;
somestruct **B;
A = malloc(sizeof(somestruct));
B = &A; // Get the address of A
A->member = 5;
printf("Member: %d", (*B)->member); /* Prints 5 */
free(A);
A = malloc(sifeof(somestruct));
A->member = 10;
printf("Member: %d", (*B)->member); /* Prints 10 */
Note that in the double pointer example B does not need updating again.
See the example here: Double Pointer