Leak or overlap

W!†A_cRaft

Ultra Cool Member
Reaction score
28
Would this leak or overlap the data? Since i did not remove the 1st temp_point before setting another, though it should have just replaced the one used before yes?

Trigger:
  • Untitled Trigger 001
    • Events
    • Conditions
    • Actions
      • Set Temp_Point = (Center of (Playable map area))
      • Unit - Create 1 Footman for Player 1 (Red) at Temp_Point facing Default building facing degrees
      • Set Temp_Point = ((Center of (Playable map area)) offset by (150.00, 100.00))
      • Custom Script: call RemoveLocation(udg_Temp_Point)
 
I would remove the tempPoint after each use, just in case (you lose nothing by doing so ^^)
 
that leaks, since you do not remove the first point you set, you have to remove it after you have created the unit;)
 
As to the Question:

- Yes, the Variable is replaced.
- No, it does leak. Either destory the location after use, or use integers.
 
so correct me if i am wrong here:

when i make a variable Temp_point it tells the compiler/assembler that i want to allocate a space in memory for later use, now I set the (center of playable map area) to be held as information inside this allocated space.

Next, i do not free space, i just tell it to get different data into it, thus basically erasing what was already in it, why does this leak? New space in memory was never alocated
 
Next, i do not free space, i just tell it to get different data into it, thus basically erasing what was already in it, why does this leak? New space in memory was never alocated

You said it, you do not free any space. Overriding not equal to erasing.
 
how come? if i take the same space in the memory and override it, the data that was there before is never reachable again but the new data does not occupy new space, it uses the one from before thus the "old" data doesn't leak it is in fact gone, no?

for example, when i start a map i am using up 50 MB of space on RAM, with 1231231231123131 runs of this trigger i'd again use only 50 MB of ram, no new allocating has been done
 
This is pretty interesting, indeed.
Yet again, I would clear the temp variable before I assign a new value.
Whether it leaks or not, we could keep on debating for hours. :nuts:
From my point of view, it would be "better" to clean up the leak and re-assign. :thup:
 
Will tend to do that i was just interested in if it does leak or not :p
Because it is really giving me a freaking :banghead::banghead::banghead:
 
I am not really familiar to the Wc3 Engine, thus I can only speculate.
Overlapping variables in c++ leaks, because they are stored into the memory.
 
>with 1231231231123131 runs of this trigger i'd again use only 50 MB of ram, no new allocating has been done

The execution of this trigger creates creates 3 locations(points), 1 unit then frees the last location(created in the OffsetLocation see below). You need to "expand"(convert to custom text) the GUI to look what's happening underneath the hood.

In fact the location constructor is called 3 times: 2 by Center Of function(GetRectCenter) and 1 time in the OffsetLocation function.

Your last line of code removes only the last location that was returned by the OffsetLocation function

You would need to use 2 location to properly "free" memory.

Trigger:
  • Untitled Trigger 001
    • Events
    • Conditions
    • Actions
      • Set temp_loc = (Center of (Playable map area))
      • Unit - Create 1 Footman for Player 1 (Red) at temp_loc facing Default building facing degrees
      • Custom script: call RemoveLocation(udg_temp_loc)
      • Set temp_loc2 = (Center of (Playable map area))
      • Set temp_loc = (temp_loc2 offset by (150.00, 100.00))
      • Custom script: call RemoveLocation(udg_temp_loc)
      • Custom script: call RemoveLocation(udg_temp_loc2)


Note that the example leaks a unit : )
 
>with 1231231231123131 runs of this trigger i'd again use only 50 MB of ram, no new allocating has been done

The execution of this trigger creates creates 3 locations(points), 1 unit then frees the last location(created in the OffsetLocation see below). You need to "expand"(convert to custom text) the GUI to look what's happening underneath the hood.

In fact the location constructor is called 3 times: 2 by Center Of function(GetRectCenter) and 1 time in the OffsetLocation function.

Your last line of code removes only the last location that was returned by the OffsetLocation function

You would need to use 2 location to properly "free" memory.

Trigger:
  • Untitled Trigger 001
    • Events
    • Conditions
    • Actions
      • Set temp_loc = (Center of (Playable map area))
      • Unit - Create 1 Footman for Player 1 (Red) at temp_loc facing Default building facing degrees
      • Set temp_loc2 = (Center of (Playable map area))
      • Set temp_loc = (temp_loc2 offset by (150.00, 100.00))
      • Custom script: call RemoveLocation(udg_temp_loc)
      • Custom script: call RemoveLocation(udg_temp_loc2)


Note that the example leaks a unit : )


yea yea, we were only focusing on discussing a Temp_loc leak, offset leaks and unit leaks but that wasn't the point :D

I was just interested in if the trigger would leak if i override the data without removing it before.
 
I'm not a C++ expert (I still learn it), so correct me if i know something wrong:
-when you call "local location tl" then it creates a new pointer ( tl = new location; ), what's a NULL pointer basically
-when you set it's value to someting (like tl = Location(X,Y), then it creates a new location type variable, and make the "tl" variable (pointer) to point to the new location
-when you create a new Location, and make the "tl" variable, to point to the new location, then the old location's still in the memory, and because we've lost it's address, we're unavailable, to remove it. So it'll leak, and we're unavailable to remove it. That's why we need to remove the location, or create a new variable (pointer) to store it's address.

But this's my opinion. As i said, i'm a "student" not an expert.
 
what luorax said is correct. basically this is the very same procedere like in any programming language but the most of todays scripting languages use some kind of build in garbage collection which takes care of leaking objects. they would be auto-removed. but not in wc3.
 
most of todays scripting languages use some kind of build in garbage collection which takes care of leaking objects

Read : JavaScript, Lua, ActionScript & pretty much every high-level programming language. When a variable that pointed to an object changes value, it will be checked whether or not it was the last pointer towards that object. If it was, it will be eligible for garbage collection. In GUI/Jass, you have to garbage-collect it yourself. It is not a high-level language like the above.
 
@Ashlebede:
wasnt that exactly what i said? if not that was what i meant.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    News portal has been retired. Main page of site goes to Headline News forum now
  • The Helper The Helper:
    I am working on getting access to the old news portal under a different URL for those that would rather use that for news before we get a different news view.
  • Ghan Ghan:
    Easily done
    +1
  • The Helper The Helper:
    https://www.thehelper.net/pages/news/ is a link to the old news portal - i will integrate it into the interface somewhere when i figure it out
  • Ghan Ghan:
    Need to try something
  • Ghan Ghan:
    Hopefully this won't cause problems.
  • Ghan Ghan:
    Hmm
  • Ghan Ghan:
    I have converted the Headline News forum to an Article type forum. It will now show the top 20 threads with more detail of each thread.
  • Ghan Ghan:
    See how we like that.
  • The Helper The Helper:
    I do not see a way to go past the 1st page of posts on the forum though
  • The Helper The Helper:
    It is OK though for the main page to open up on the forum in the view it was before. As long as the portal has its own URL so it can be viewed that way I do want to try it as a regular forum view for a while
  • Ghan Ghan:
    Yeah I'm not sure what the deal is with the pagination.
  • Ghan Ghan:
    It SHOULD be there so I think it might just be an artifact of having an older style.
  • Ghan Ghan:
    I switched it to a "Standard" article forum. This will show the thread list like normal, but the threads themselves will have the first post set up above the rest of the "comments"
  • The Helper The Helper:
    I don't really get that article forum but I think it is because I have never really seen it used on a multi post thread
  • Ghan Ghan:
    RpNation makes more use of it right now as an example: https://www.rpnation.com/news/
  • The Helper The Helper:
  • The Helper The Helper:
    What do you think Tom?
  • tom_mai78101 tom_mai78101:
    I will have to get used to this.
  • tom_mai78101 tom_mai78101:
    The latest news feed looks good

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top