No No No, I'm not talking about storing paths between all the locations the dwarf knows, I said store a Pointer (a C++ memory pointer to the stockpile and area objects). They then generate paths TO those locations when they want something. No path data is stored in the dwarf just locations. Storing paths in each dwarf would indeed be too much. I'm looking at maybe 10 max locations for each type and 20 types of objects for 200 data points which would be 4 4 byte pointers, 800 bytes per dwarf max possibly some additional overhead for structure.
If their is to be actual path data (probably in the form of an array of nodes/areas to traverse) then the dwarf would need to have a maximum limit on how many they hold. Each end point of the path would obviously be a known point, when ever theirs a path needed they will look to their path list and see if they know it already, their would be some method to increment paths each time their requested and only the top X most frequently requested paths are stored. Say the top 100 pairings of start/end points are kept in a list and the top 10 most frequently requested are solved to produce paths, each time the 11th most requested path bumps out the previous 10th place path the old path is forgotten and the new one stored. Very much like the system posted earlier for global path storage but localized to each dwarf.