When you create a CIN, you compile your source into an object code file and load the code into the CIN. After the object code is loaded into the CIN, LabVIEW loads a copy of the code resource into memory and attaches it to the CIN. When you save the VI, the code resource is saved along with the VI as an attached component. Because the code resource is saved along with the VI as an attached component, the original object code file is no longer needed.
When LabVIEW loads a VI, it allocates a data space for that VI. A data space is a block of data storage memory. LabVIEW uses the data space to store information such as the values in shift registers. If the VI is reentrant, LabVIEW allocates a data space for each usage of the VI.
Within your CIN code resource, you might have declared global data. Global data includes variables declared outside of the scope of all routines and variables declared as static variables within routines. LabVIEW allocates space for this global data. As with the code itself, only one instance of the global data is in memory. Regardless of how many nodes reference the code resource and regardless of whether the surrounding VI is reentrant, only one copy of the global variables is ever in memory and the value of the global variables are consistent.
When you create a CIN, LabVIEW allocates a CIN data space strictly for the use of the CIN. A CIN data space is a 4-byte storage location in the VI data space(s). Each CIN can have one or more CIN data spaces reserved for the CIN, depending on how many times the CIN appears in a VI or collection of VIs. You can use this CIN data space to store global data on a per data space basis. The following figure shows a simple example of data storage spaces for one CIN.

A CIN references the code resource by name, using the name you specified when you created the code resource. When you load a VI containing a CIN, LabVIEW looks in memory to see if a code resource with the desired name is already loaded. If a code resource with the desired name is already loaded into memory, LabVIEW links the CIN to that code resource for execution purposes.
Linking the CIN to the code resource behaves the same way as links between VIs and subVIs. When you try to reference a subVI and another VI with the same name already exists in memory, LabVIEW references the one already in memory instead of the one you selected. In the same way, if you try to load references to two different code resources having the same name, only one code resource is actually loaded into memory. Both references to the code resources point to the same code. LabVIEW can verify that a subVI call matches the subVI connector pane terminal. However, LabVIEW cannot verify that your source code matches the CIN call.