You have to set it explicitly, there is no garbage collector or reference counts in C. The two pointers have no connection, so when you free x, pointer p still points to the original block of memory. You must be very careful to manage dynamic memory properly in C, and even in C++.
You have not a pointer to pointer. As Richard correctly pointed out, you have two independent pointers to the same block of memory; you have to explicitely set p = NULL;.
With a pointer to pointer the scenario would change:
char* x = (char*)calloc(sizeof(char),150);
char** p = &x;
x = NULL;
printf("%p\n", *p); // here *p is NULL
Hello community,first post here and hoping I can get some help here to modify some C++ code.
So as the title said I would link some guidance to modify the source code for the dll compare plugin for Notepad++
Currently with the plugin as it is, comparing string gives the following result:
<oops cannot load picture!>
Not very helpful to me as I do not where there the change is exactly.
What I would like it to do is something more like this:
<oops cannot load picture!>
The source code for the plugin can be found here:
I had a look at the code in Visual Studio 2012 but I'm at a loss as to where to start making change... creating dlls is completely new to me! Any help would be much appreciated! (for starters how to load is picture to illustrate my intent )
The most basic thing to do for your need is to handle the WM_NCHITTEST[^] message.
The LPARAM parameter gives you the mouse coordinates on your window and then you figure out if it is over your customized title bar and return HTCAPTION from the message handler.
You may also want to check when to return HTCLOSE, HTMAXBUTTON, HTMINBUTTON, HTSYSMENU etc.
«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) (October 2009 - September 2013)
I have recently been teaching myself C++, is it possible to go down the machine learning and artificial intelligence route effectively using this language? Or is C++ only good for game development in 2018 and onwards?
If that's the case what is a good language to go down the machine learning and artificial intelligence route?
C++ has been used (and is being used) for everything from low-level system APIs to ML. About the only thing I have not seen C++ used for is writing the kernel of an O/S (probably because it requires too much runtime library support).
Regarding Machine Learning libraries, what counts is not whether the library is written in C++, but whether it has an interface ("bindings") that is callable from C++. AFAIK, most low-level libraries (Android's NNAPI, Apple's Core ML, etc.) all have C++ bindings.
Many higher-level libraries (e.g. TensorFlow) call the lower-level libraries, and not all of these higher-level libraries have C++ bindings. Perhaps that is the cause of your confusion.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
Or is C++ only good for game development in 2018 and onwards
You can do whatever you want with C++.
The effort depends on what you want to do.
If there are C++ Machine Learning SDK, then you are ready to use them.
If there are no ML SDK, then you will need to develop them yourself; it is what people have been doing with other language, it didn't just sprouted out of the ground.
There are a few rule-based programming languages that were developed with artificial intelligence in mind, specifically expert systems, starting with Lisp and Prolog. But, other than that, any general purpose language is suitable.
C++ is a specifically good choice for applications that involve heavy computing, and that is certainly an ostentatious property of most ML algorithms.
There's one particular problem you should watch out for however: memory management. Unlike many newer languages, C++ requires you to manage your memory yourself, and this is a constant source of problems, specifically in complex programs that require a lot of memory - and this definitely includes ML. You should therefore learn about the use of smart pointers and always use those, rather than raw pointers. The sooner you get used to using them, the better: it will save you a ton of headaches in the long run!
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)