|
The Visual Studio help has the following snippet under vector<>.front:
#include <vector><br />
#include <iostream><br />
<br />
int main( )<br />
{<br />
using namespace std; <br />
vector <int> v1;<br />
<br />
v1.push_back( 10 );<br />
v1.push_back( 11 );<br />
<br />
int& i = v1.front( );<br />
const int& ii = v1.front( );<br />
<br />
cout << "The first integer of v1 is "<< i << endl;<br />
i++;<br />
cout << "The second integer of v1 is "<< ii << endl;<br />
}
It is said to produce:
The first integer of v1 is 10
The second integer of v1 is 11
I'm confused. Just how is this the second integer of v1. Seems to me that the first integer of v1 was simply incremented and happens to have the same value as the second integer. If so, the author of this page should be sacked for writing a deliberately confusing entry.
|
|
|
|
|
since front returns a reference, then i and ii are "pointing" to the same value, that's why ii == 11.
http://msdn.microsoft.com/en-us/library/0z70c7a5.aspx[^]
from the above page, see that the second cout is different from your example...
using namespace std;
vector <int> v1;
v1.push_back( 10 );
v1.push_back( 11 );
int& i = v1.front( );
const int& ii = v1.front( );
cout << "The first integer of v1 is "<< i << endl;
i++;
cout << "Now, the first integer of v1 is "<< i << endl;
Watched code never compiles.
|
|
|
|
|
also check the address of i and ii you will see they are the same.
Watched code never compiles.
|
|
|
|
|
Well it seems my online help is old. Need to update and/or switch to web help.
|
|
|
|
|
|
Peter Camilleri wrote: If so, the author of this page should be sacked for writing a deliberately confusing entry.
I agree. Not a lucky sample.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
If I attempt to download http://www.codeproject.com/App_Themes/Std/Img/logo225x90.gif
It returns bad request with the code used below.
Download->HostFileLocation has /App_Themes/Std/Img/logo225x90.gif in UNICODE format stored in it.
#define DEFAULT_BUFLEN 512
char HTTPrequest[DEFAULT_BUFLEN];
char *HostFileLocation = new char[wcslen(Download->HostFileLocation)+1];
wcstombs(HostFileLocation, Download->HostFileLocation, wcslen(Download->HostFileLocation)+1);
char *Host = "www.codeproject.com";
char *UserAgent = "MyPrivateDownloader b86";
sprintf(HTTPrequest,"GET %s HTTP/1.1\r\nHost: %s\r\nUser Agent: %s\r\nAccept: */*\r\nAccept-Encoding:\r\n\r\n", HostFileLocation, Host, UserAgent);
send(IPv4,HTTPrequest,strlen(HTTPrequest),0);
However if I use. HTTP/1.0
sprintf(HTTPrequest,"GET %s", HostFileLocation);
send(IPv4,HTTPrequest,strlen(HTTPrequest),0);
Everything goes smoothly.
I appreciate any help I can get on this matter.
|
|
|
|
|
The header is called User-Agent[^], this should fix it.
/Moak
PS: The way you use string buffers is a buffer overrun[^] waiting to happen.
|
|
|
|
|
I know what a buffer overrun is!
But if I have to avoid I have to use all those _s functions and calculate the length of every string.
Anyways I do not know how a user can trigger it!
|
|
|
|
|
It was just ment as a tip, I know you didn't explicitly ask for it
String and buffer handling is a repeating issue when working with protocols. Perhaps you can avoid low-level memory handling and use one of the many C++ string classes out there to format/parse text strings. That's what I do in my HTTP client, as a result, you can as a developer focus more on protocol and network functionality.
Have a good weekend!
|
|
|
|
|
How do you manager transmission and receiving buffers, the buffers varies from host to host depending on their web server daemon IIS/Apache.
I believe my problem lies in the header response output that I'm using to trace protocol behavior.
My app is Unicode I retrieve the HTTP request, it's all char so I convert multi-byte to wchar_t.
Then use MessageBox, it might be causing the memory problem.
|
|
|
|
|
Fareed Rizkalla wrote: How do you manager transmission and receiving buffers
Use a receive buffer that can grow if necessary, have a look at std::vector[^].
The transmission buffer probably doesn't change after allocation, receive data chunks and write them to disk.
Hope it helps.
|
|
|
|
|
Hi,
I know how to use CCmdUI in a command_ui_handlers mwthod to change the checked state of CMFCRibbonCheckBox object, but is there any way to do this by the object variable itself, like a SetCheck(true) method.
|
|
|
|
|
I have a simple MFC application that I would like to run multiple times at the same time. My question is how will I be able to find out the application instance (Is there a registry entry somewhere?) as I need for each of these instances to have its own settings. can this be done?
|
|
|
|
|
The easiest would be to store a number is the registry or a file.
Every instance of the application must increment this counter when it starts and decrement the counter when it exits.
|
|
|
|
|
You read my mind. I was just hoping there were more smarts available may be in the registry or something... oh well..
Thanks
|
|
|
|
|
Why do you need , to obtain an unique instance of application ?
|
|
|
|
|
Why not ?
Watched code never compiles.
|
|
|
|
|
I guess I wanted each instance to be unique.
|
|
|
|
|
Software2007 wrote: My question is how will I be able to find out the application instance
You could store the process ID; but that should change each time you start the applications.
Software2007 wrote: as I need for each of these instances to have its own settings. can this be done?
How will you start the application ? or the question is how do you match the settings for each instance of the application ?
Could you start each instance with a command line parameter with the setting information ?
Where are the settings stored ? files ? registry ?
M.
Watched code never compiles.
|
|
|
|
|
I guess the above suggestion would wrk for me by assigning registry names based on each instance number like Registry instance #1, Registry Instance #2...etc), I can read and write based on the instance #.
|
|
|
|
|
|
Hi All,
I am running an application which is a form view application.I am allocating memory of size 160kb in a for loop .I am allocating memory at the begining of for loop for each iteration and freeing it at the end of each iteration.I have 133 such iteration.But i am facing a problem.In the 9th iteration when i am trying to allocate a memory using malloc the application crashes.
I am getting the following messsage in the output window.
HEAP[TEST.exe]: HEAP: Free Heap block 3f277a8 modified at 3f27850 after it was freed
I am getting the following messages in the call stack window:
ntdll.dll!7c90120e()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!7c96e139()
ntdll.dll!7c94b535()
ntdll.dll!7c927573()
ntdll.dll!7c91005d()
ntdll.dll!7c927784()
ntdll.dll!7c927573()
> TEST.exe!_heap_alloc_base(unsigned int size=160036) Line 105 + 0x28 bytes C
TEST.exe!_heap_alloc_dbg_impl(unsigned int nSize=160000, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0, int * errno_tmp=0x015cf02c) Line 427 + 0x9 bytes C++
TEST.exe!_nh_malloc_dbg_impl(unsigned int nSize=160000, int nhFlag=0, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0, int * errno_tmp=0x015cf02c) Line 239 + 0x19 bytes C++
TEST.exe!_nh_malloc_dbg(unsigned int nSize=160000, int nhFlag=0, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0) Line 296 + 0x1d bytes C++
TEST.exe!malloc(unsigned int nSize=160000) Line 56 + 0x15 bytes C++
TEST.exe!TEST_IDP_FUNC1(unsigned char * pucSrcImg=0x07200068, unsigned char * pucDstImg=0x059d4d68, unsigned short uiSrcRows=400, unsigned short uiSrcCols=400, TBoundBox * pstBoundBox=0x05bd8318) Line 529 + 0x11 bytes C
TEST.exe!TEST_IDP_FUNC2(unsigned char * pucSrcImg=0x05aecc58, unsigned char * pucDstImg=0x03f00690, unsigned short uiSrcRows=400, unsigned short uiSrcCols=400, unsigned short uiDstRows=400, unsigned short uiDstCols=400, TBoundBox * pstBoundBox=0x05bd8318) Line 4117 + 0x1b bytes C
TEST.exe!CTEST::FUNC3(CTESTImage * objSrcImage=0x03e726c8, CTESTImage * objDstnImage=0x03e7a050, unsigned char * pucDstImg=0x03f00690) Line 107 + 0x25 bytes C++
TEST.exe!CTESTView::FUNC4() Line 8346 C++
TEST.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x0039c900, unsigned int nID=32902, int nCode=0, void (void)* pfn=0x00401276, void * pExtra=0x00000000, unsigned int nSig=57, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Line 82 C++
TEST.exe!CCmdTarget::OnCmdMsg(unsigned int nID=32902, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Line 381 + 0x27 bytes C++
TEST.exe!CView::OnCmdMsg(unsigned int nID=32902, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Line 162 + 0x18 bytes C++
TEST.exe!CFrameWnd::OnCmdMsg(unsigned int nID=32902, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Line 942 + 0x23 bytes C++
TEST.exe!CFrameWndEx::OnCmdMsg(unsigned int nID=32902, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Line 995 + 0x18 bytes C++
TEST.exe!CWnd::OnCommand(unsigned int wParam=32902, long lParam=0) Line 2364 C++
TEST.exe!CFrameWnd::OnCommand(unsigned int wParam=32902, long lParam=0) Line 366 C++
TEST.exe!CFrameWndEx::OnCommand(unsigned int wParam=32902, long lParam=0) Line 359 + 0x10 bytes C++
TEST.exe!CWnd::OnWndMsg(unsigned int message=273, unsigned int wParam=32902, long lParam=0, long * pResult=0x015cfcd8) Line 1769 + 0x1e bytes C++
TEST.exe!CWnd::WindowProc(unsigned int message=273, unsigned int wParam=32902, long lParam=0) Line 1755 + 0x20 bytes C++
TEST.exe!AfxCallWndProc(CWnd * pWnd=0x0039a4a0, HWND__ * hWnd=0x00190eae, unsigned int nMsg=273, unsigned int wParam=32902, long lParam=0) Line 240 + 0x1c bytes C++
TEST.exe!AfxWndProc(HWND__ * hWnd=0x00190eae, unsigned int nMsg=273, unsigned int wParam=32902, long lParam=0) Line 403 C++
user32.dll!7e418734()
user32.dll!7e418816()
user32.dll!7e4189cd()
user32.dll!7e418a10()
TEST.exe!AfxInternalPumpMessage() Line 183 C++
TEST.exe!CWinThread::PumpMessage() Line 900 C++
TEST.exe!CWinThread::Run() Line 629 + 0xd bytes C++
TEST.exe!CWinApp::Run() Line 865 C++
TEST.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00020882, int nCmdShow=1) Line 47 + 0xd bytes C++
TEST.exe!wWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00020882, int nCmdShow=1) Line 34 C++
TEST.exe!__tmainCRTStartup() Line 263 + 0x2c bytes C
TEST.exe!wWinMainCRTStartup() Line 182 C
kernel32.dll!7c817077()
Please help.
Thanking you,
Ashwath.
|
|
|
|
|
Code Watson, we need code.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Code, plz. Urgent. Doesn't that work?
Chris Meech
I am Canadian. [heard in a local bar]
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
|
|
|
|
|