Thread overview | |||||
---|---|---|---|---|---|
|
August 06, 2005 Assert Error | ||||
---|---|---|---|---|
| ||||
The following code runs fine, but gave an assert error at the end, does anyone know why? // this code gave "Error: AssertError Failure test2(12)" import std.stdio; int main() { char[][] list; list.length = 5; for(int i =0; i < 5; i++) { list[i] = "hello"; } for(int i=0; i < 5; i++) writefln(list[i]); } Ok, I know this is a D forum, but what inspired me to write the above program was the following C program, which gives """3 [main] a 3348 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION 20385 [main] a 3348 open_stackdumpfile: Dumping stack trace to a.exe.stackdump""" on gcc, and on VS6.0, it simply says "Visual Studio has encountered an error and needs to close" # include <stdio.h> # include <stdlib.h> # include <string.h> int main() { int i; char** list; list = (char**)malloc(5*sizeof(char*)); for(i=0; i < 5; i++) { list[i] = (char*)malloc(10*sizeof(char)); strcpy(list[i], "hello"); } for(i=0; i < 5; i++) printf("%s\n", list[i]); /*freeing pointers here*/ } What really baffles me is that if I replace " for(i=0; i < 5; i++) printf("%s\n", list[i]); " with " printf("%s\n", list[0]); printf("%s\n", list[1]); printf("%s\n", list[2]); printf("%s\n", list[3]); printf("%s\n", list[4]); " the program runs fine. No errors, and it actually gives the right output. Does anyone know why? -Jerry |
August 06, 2005 Re: Assert Error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jerry | On Sat, 06 Aug 2005 18:29:58 -0400, Jerry <Jerry_member@pathlink.com> wrote:
> The following code runs fine, but gave an assert error at the end, does anyone
> know why?
>
> // this code gave "Error: AssertError Failure test2(12)"
> import std.stdio;
>
> int main()
> {
> char[][] list;
> list.length = 5;
> for(int i =0; i < 5; i++) {
> list[i] = "hello";
> }
>
> for(int i=0; i < 5; i++)
> writefln(list[i]);
> }
Return something from main.
|
August 08, 2005 Re: Assert Error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vathix | Vathix wrote: > The following code runs fine, but gave an assert error at the end, does anyone > know why? > > // this code gave "Error: AssertError Failure test2(12)" > import std.stdio; > > int main() > { > char[][] list; > list.length = 5; > for(int i =0; i < 5; i++) { > list[i] = "hello"; > } > > for(int i=0; i < 5; i++) > writefln(list[i]); > } <snip> > Return something from main. As much as Walter's tried to pretend otherwise, the OP's code is invalid, and it's a bug that the compiler doesn't report an error. http://www.digitalmars.com/d/statement.html#return "At least one return statement is required if the function specifies a return type that is not void." This is one of the most common questions on these 'groups. Time to fix? Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on on the 'group where everyone may benefit. |
Copyright © 1999-2021 by the D Language Foundation